总结:
这种转换个人觉得 如果一开始接触是比难记忆的,使用简单的方式就是将十进制作为传递的载体,即 先计算 2 8 16 转十进制 , 再计算 十进制 转 二 八 十六进制 ,这种是相对来说比较方便记忆的.
例如:转十进制时
二进制转为十进制的方式为:从右往左开始 依次进行(数值*2^i次方)计算,然后相加得到十进制
八进制转为十进制的方式为:从右往左开始 依次进行(数值*8^i次方)计算,然后相加得到十进制
十六进制转为十进制的方式为:从右往左开始 依次进行(数值*16^i次方)计算,然后相加得到十进制
可得: 二 八 十六进制转为十进制时的公式为: 数值 *(几进制就是数字几)^ i次方
如:123(八进制) 转 十进制
1*8^2 + 2*8^1 + 3*8^0 = 83
例如十进制转 其他时
将某个十进制数除 (几进制就是除几) 得到的整数部分保留,作为第二次除时的被除数,得到的余数依次记下,重复上述步骤,
直到整数部分为0就结束,将所有得到的余数最终逆序输出,则为该十进制对应的二进制数。
可得: 796(十进制) ==> 1434(八进制)
796/8=99...4
99/8=12...3
12/8=1..4
1/8=0...1
二进制转八进制:
计算方式:
把二进制数从右到左每三位为一组进行计算,如右边不足三位则用0代替(八进制的数各个位都小于8)
如: (二进制) 1001 ==> 001 001
计算:
每组有三个数 , 每组数从右至左依次为:数值 * 2的0次方 + 数值 * 2的1次方 + 数值*2的2次方
二进制) 1001 ==> 001 + 001
(二进制)1001 ==> 0*2^2 + 0*2^1 + 1*2^0 拼接后三位 0*2^2 + 0*2^1 + 1*2^0 = 11(八进制)
结果:
二进制数1001 转为 八进制数为 :11
示例:
二进制:1101110001
分组:
001 101 110 001
计算:
第一组:0*2^2 + 0*2^1 + 1*2^0 = 0+0+1 = 1
第二组:1*2^2 + 1*2^1 + 0*2^0 = 4+2+0 = 6
第三组:1*2^2 + 0*2^1 + 1*2^0 = 4+0+1 = 5
第四组:0*2^2 + 0*2^1 + 1*2^0 = 0+0+1 = 1
结果:
二进制:1101110001 转为八进制数为:1561
注:
结果是1561 而不是1651 注意顺序
简化:
因二进制数 只有0和1,所以分组后计算的值为: 111==>4+2+1 , 101==>4+0+1
二进制转十进制:
计算方式:
二进制和八进制和十六进制 转十进制不需要分组 ! ! ! 直接进行计算
计算:
二进制从右往左开始 依次进行(数值*2^i次方)计算,然后相加得到十进制
i:表示当前位数的序号 , (i从右开始是0)
如:101数值,从右开始:1对应 i 的序号为0 ,0对应i 的序号为1
如:10011(二进制) ==> 19(十进制)
对应下方: 1 0 0 1 1 = 19(二进制)
1*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 1*2^0 = 16+0+0+2+1 = 19(十进制数)
结果:
二进制数10011 转为 十进制数为 :19
二进制转十六进制:
计算方式:
把二进制数从右到左每四位为一组进行计算,如右边不足四位则用0代替(十六进制小于10的就是1~9,然后10到15为a.b.c.d.e.f) 注:十六进制开头可用0x表示
计算:
同理,每组4个数 , 每组的数从右至左依次为:数值 * 2的0次方 + 数值 * 2的1次方 + 数值*2的2次方
如:111101101(二进制) 分组得:0001 1110 1101
0001 1110 1101
第一组:1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = 8 + 4 + 0 + 1 = d(就是13)
第二组:1*2^3 + 1*2^2 + 1*2^1 + 0*2^0 = 8 + 4 + 2 + 0 = e(就是14)
第三组:0*2^3 + 0*2^2 + 0*2^1 + 1*2^0 = 0 + 0 + 0 + 1 = 1(就是1)
最终111101101(二进制)转十六进制数为: 1ed
结果:
二进制数111101101 转为 十六进制数为 :1ed
八进制转二进制
计算方式:
1.就是倒推得 如: 1234(八进制),从右边取出每一位数1,2,3,4
4的二进制是1*2^2 + 0*2^1 + 0*2^0 ==> 4 == > 100
3的二进制是0*2^2 + 1*2^1 + 1*2^0 ==> 1+2 =3 ==> 011
2的二进制是0*2^2 + 1*2^1 + 0*2^0 ==> 2 ==> 010
1的二进制是0*2^2 + 0*2^1 + 1*2^0 ==> 1 ==>001
结果1234(八进制)的二进制为 001 010 011 100
简化:
每一位八进制数字对应的二进制数为 :
0 ==> 000
1 ==> 001
2 ==> 010
3 ==> 011
4 ==> 100
5 ==> 101
6 ==> 110
7 ==> 111
八进制转为十进制
计算方式:
八进制转十进制与二进制转十进制的方式相同
不同的点在于 由原来的1*2^i次方, 变为 1*8^i的次方
计算:
把123(八进制)转为十进制
1*8^2 + 2*8^1 + 3*8^0 = 64+16+3=83
结果:
8进制数值123 转换为10进制的结果: 83
八进制转为十六进制:
转二进制再转十六 或者 转十进制再转十六进制. 嘻嘻嘻嘻嘻 !
十进制转二进制:
方式:
除以2,反向取余数 , 直到商为0终止
例如: 9(十进制)-->1001(二进制)
将某个十进制数除2得到的整数部分保留,作为第二次除2时的被除数,得到的余数依次记下,重复上述步骤,
直到整数部分为0就结束,将所有得到的余数最终逆序输出,则为该十进制对应的二进制数。
9/2 商为8 余1 4/2 余0 2/2 余1 2/1 余1商0
计算:
255(十进制) ==> 11111111 (二进制) 得到的余数是从下往上
255 / 2 = 127...1
127 / 2 = 63...1
63 / 2 = 31...1
31 / 2 = 15...1
15 / 2 = 7...1
7 / 2 = 3...1
3 / 2 = 1...1
------------------------------------
789(十进制)=1100010101(二进制)得到的余数是从下往上
789 / 2 = 394......1 第10位
394 / 2 = 197......0 第9位
197 / 2 = 98......1 第8位
98 / 2 = 49......0 第7位
49 / 2 = 24......1 第6位
24 / 2 = 12......0 第5位
12 / 2 = 6......0 第4位
6 / 2 = 3......0 第3位
3 / 2 = 1......1 第2位
1 / 2 = 0......1 第1位
结果:
255(十进制) ==> 11111111 (二进制)
789(十进制)=1100010101
十进制转八进制:
方式:
除以8 , 反向取余数,直到商为0终止 与二进制一样
796(十进制) ==> 1434(八进制)
计算:
796/8=99...4
99/8=12...3
12/8=1..4
1/8=0...1
结果:
796(十进制) ==> 1434(八进制)
十进制转十六进制:
方式:
除以16,反向取余数,直到商为0终止。
十六进制是由0-9和A-F组成,A相当与十进制的10,B相当与11以此类推,F相当于15
计算:
十进制数796转换为十六进制数
796/16 =49..12(c)
49/16 =3...1(1)
3/16 ==> 0...3(3) ==> 这里表示已经不能除了 直接余数为3商为0
结果:
十进制数796转换为十六进制数为31c
十六进制转十进制:
方式:
由从右往左开始依次与16^i次方相乘,然后相加得到十进制
16进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……
计算:
2AF5换算成10进制:
第0位: 5 * 16^0 = 5
第1位: F * 16^1 = 240
第2位: A * 16^2= 2560
第3位: 2 * 16^3 = 8192
最后相加:5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997
结果:
十六进制数值2AF5 转换为 十进制数的结果为 10997
十六进制转为八进制:
先将十六进制转为二进制,再将二进制转为八进制
十六进制转二进制:
方式:
由于在二进制的表示方法中,每四位所表示的数的最大值对应16进制的15,即16进制每一位上最大值,
所以,我们可以得出简便的转换方法,将16进制上每一位分别对应二进制上四位进行转换,即得所求:
计算:
例:2AF5换算成2进制: 二进制中每组从右往左 每个1对应的为8 4 2 1 如:1111 == 8 4 2 1
例: (0可以忽略) 如: 1101 ==> 8 4 0 1
解: 2 A(10) F(15) 5
结果:
十六进制数2AF5对应的二进制数为:10 1010 1111 0101