目录
一、进制基础_进制转换
10进制:是逢10进1 的计数规则
2进制:是逢2进1 的计数规则
8进制:是逢8进1 的计数规则
16进制:是逢16进1 的计数规则
10进制对应2进制
2进制-->10进制
10进制-->2进制
16进制-->10进制
10进制-->16进制
二、进制转换_java api 代码示例***
一、进制基础_进制转换
数学:计数的规律
10进制:是逢10进1 的计数规则
权:10000 1000 100 10 1 每个数位上代表1的个数
基数:10 进位规律
数字:0 1 2 3 4 5 6 7 8 9
权是基数的n次幂
2进制:是逢2进1 的计数规则
权:128 64 32 16 8 4 2 1 每个数位上代表1的个数
基数:2 进位规律
数字:0 1
权是基数的n次幂
8进制:是逢8进1 的计数规则
权:4096 512 64 8 1 每个数位上代表1的个数
基数:16 进位规律
数字:0 1 2 3 4 5 6 7
权是基数的n次幂
16进制:是逢16进1 的计数规则
权:256 16 1 每个数位上代表1的个数
基数:16 进位规律
数字:0 1 2 3 4 5 6 7 8 9 a b c d e f
权是基数的n次幂
10进制对应2进制
0 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111
2进制-->10进制
************************************************************
11000000(2) = ?(10)
256 128 64 32 16 8 4 2 1
0 1 1 0 0 0 0 0 0
11000000(2) = 128 + 64 = 192(10)
11000101(2) = ?(10)
256 128 64 32 16 8 4 2 1
0 1 1 0 0 0 1 0 1
11000101(2) = 128 + 64 + 4+1 = 197(10)
快速手动计算-总结:
步骤1、列出 2的次方
步骤2、二进制数对应上 2的次方
步骤3、二进制数为1的, 2的次方,进行相加
************************************************************
10进制-->2进制
************************************************************
234(10) = ?(2) = 11101010(2)
128 64 32 16 8 4 2 1
234(10) = 1 1 1 0 1 0 1 0 (2)
106 42 10 2 0
234(10) = 11101010(2)
201(10)= ?(2)
128 64 32 16 8 4 2 1
201(10)= 1 1 0 0 1 0 0 1
73 9 1 0
201(10)= 11001001(2)
快速手动计算-总结:
步骤1、列出 2的次方
步骤2、十进制数依次减去 2的次方,减去大于0的计为1,小于等于0的计为0
************************************************************
16进制-->10进制
************************************************************
256 16 1
141(16) = 1*256 + 4*16 + 1*1 = 321(10)
快速手动计算-总结:
步骤1、列出 16的次方
步骤2、16进制数,对应相乘,累加即可
************************************************************
10进制-->16进制
************************************************************
256 16 1
321(10) = 1 4 1 = 141(16)
65 1 0
快速手动计算-总结:
步骤1、列出 16的次方
步骤2、依次相除
************************************************************
二、进制转换_java api 代码示例***
我们用 java代码来验证,如上 10进制转换2进制 等是否正确:
package t04_进制转换;
public class BaseConversionTest {
public static void main(String[] args) {
BaseConversionTest baseConversionTest = new BaseConversionTest();
baseConversionTest.java10to2();
// baseConversionTest.java2to10();
// baseConversionTest.java10to16();
// baseConversionTest.java16to10();
// baseConversionTest.java10to8();
// baseConversionTest.java8to10();
}
/**
* 10进制转2进制
*
* Java会将10进制"234" 转化为 2进制赋值到 i 的内存中。
* 在计算机内部,只有2进制数据
*
* toBinaryString(int i): 把10进制转化为2进制的方法
*/
private void java10to2(){
int i=234;
String str3 = Integer.toBinaryString(i);
System.out.println("str3--->"+str3); //11101010
i = 6;
String str1 = Integer.toBinaryString(i);
System.out.println("str1--->"+str1); //110
i =8;
String str2 = Integer.toBinaryString(i);
System.out.println("str2--->"+str2); //1000
System.out.println(Integer.toBinaryString(201));//11001001
System.out.println(Integer.toBinaryString(-10));//11111111111111111111111111110110
System.out.println(Integer.toBinaryString(-9)); //11111111111111111111111111110111
System.out.println(Integer.toBinaryString(-8)); //11111111111111111111111111111000
System.out.println(Integer.toBinaryString(-1)); //11111111111111111111111111111111
System.out.println(Integer.toBinaryString(0));//0
System.out.println(Integer.toBinaryString(1));//1
System.out.println(Integer.toBinaryString(10));//1010
i = -1;//在内存中 -1 是32个1, 是补码!
System.out.println(Integer.toBinaryString(i));//11111111111111111111111111111111
}
/**
* 2进制转10进制
*/
private void java2to10(){
String str = Integer.valueOf("110",2).toString();//6
System.out.println(str);
}
/**
* 10进制转成16进制
* Integer.toHexString(int i)
*/
private void java10to16(){
String str = Integer.toHexString(321);//141
System.out.println(str);
}
/**
* 16进制转成10进制
*/
private void java16to10(){
String str = Integer.valueOf("141",16).toString();//321
System.out.println(str);
}
/**
* 10进制转成8进制
* Integer.toOctalString(int i)
*/
private void java10to8(){
String str = Integer.toOctalString(10);//12
System.out.println(str);
}
/**
* 8进制转成10进制
*/
private void java8to10(){
String str = Integer.valueOf("12",8).toString();//10
System.out.println(str);
}
}