二进制、八进制、十进制、十六进制--转换

1. 二进制 <=> 十进制

  • 二进制 转 十进制
    eg: 10101.01 => 21.25
    计算方式:

1 * 2^0 + 0 * 2^1 + 1 * 2^2 + 0 * 2^3 + 1 * 2^4 + 0 * 2^-1 + 1 * 2^-2 = 1 + 0 + 4 + 0 + 16 + 0 + 0.25 = 21.25

说明:二进制数的整数部分从右到左计算(n * 2^0 + n1 * 2^1 + n2 * 2^2.......),小数部分从左到右计算(n * 2^-1 + n1 * 2^-2 + n2 * 2^-3.......),然后相加所得就是十进制数。

  • 十进制 转 二进制
    eg: 30.69 => 11110.101100001010
    计算方式:

先计算整数部分:
30 / 2 = 15 ----余0
15 / 2 = 7 ----余1
7 / 2 = 3 ----余1
3 / 2 = 1 ----余1
1 / 2 = 0 ----余1
整数部分转为二进制数为 11110

再计算小数部分:
0.69 * 2 = 1.38 -----取整数 1
0.38 * 2 = 0.76 -----取整数 0
0.76 * 2 = 1.52 -----取整数 1
0.52 * 2 = 1.04 -----取整数 1
0.04 * 2 = 0.08 -----取整数 0
0.08 * 2 = 0.16 -----取整数 0
0.16 * 2 = 0.32 -----取整数 0
0.32 * 2 = 0.64 -----取整数 0
0.64 * 2 = 1.28 -----取整数 1
0.28 * 2 = 0.56 -----取整数 0
0.56 * 2 = 1.12 -----取整数 1
0.12 * 2 = 0.24 -----取整数 0
如此计算下去,直到积中的小数部分为零,此时0或1为二进制的最后一位。或者达到所要求的精度为止。

说明:十进制转二进制,整数部分除2取余,小数部分乘2取整,之后整数部分余数从下往上依次为二进制的高位到低位,小数部分的取整从上往下依次为二进制的小数部分高位到低位。

2. 二进制 <=> 八进制

  • 二进制 转 八进制
    eg: 10010110 => 226
    计算方式:

110 (从右数三位)
0 * 2^0 + 1 * 2^1 + 1 * 2^2 = 0 + 2 + 4 = 6
010 (从右数 第4位到第6位)
0 * 2^0 + 1 * 2^1 + 0 * 2^2 = 0 + 2 + 0 = 2
010 (从右数 第7位到第9位,不足补0)
0 * 2^0 + 1 * 2^1 + 0 * 2^2 = 0 + 2 + 0 = 2
转换的八进制为 226

说明:二进制转八进制,从右到左,三位二进制算一次,不足三位补0,然后把所得值 从左到右排列即是 八进制数。

  • 八进制 转 二进制
    eg: 226 => 10010110
    计算方式:

2 (从左数,第一位)
2 / 2 = 1 ----余数0
1 / 2 = 0 ----余数1
转换二进制数为: 010
2 (从左数,第二位)
2 / 2 = 1 ----余数0
1 / 2 = 0 ----余数1
转换二进制数为: 010
6 (从左数,第三位)
6 / 2 = 3 ----余数0
3 / 2 = 1 ----余数1
1 / 2 = 0 ----余数1
转换二进制数为: 110
转换的二进制数为:10010110

说明:八进制转二进制,每位八进制数对应三位二进制数,不足在高位补0,每位八进制数是除2取余,且得到的余数的排序是从下往上组成二进制数。此时如果这个八进制的数在高位,那么得到的三位二进制数也在高位。
图示:

八进制转二进制7e.jpg

3. 二进制 <=> 十六进制

  • 二进制 转 十六进制
    eg:11010010 => D2
    计算方式:

0010(从右边数4位)
0 * 2^0 + 1 * 2^1 + 0 * 2^2 + 0 * 2^3 = 0 + 2 + 0 + 0 = 2
1101(从右边数第5位至第8位)
1 * 2^0 + 0 * 2^1 + 1 * 2^2 + 1 * 2^3 = 1 + 0 + 4 + 8 = 13
转换的十六进制为:D2

注: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
说明: 二进制数转换为十六进制数,从二进制数低位开始算起,每4位对应一个十六进制数,不足4位补0,且低位与低位,高位与高位一一对应。此时,每4位二进制数计算方式等同上面转为十进制数的计算方式。

  • 十六进制 转 二进制
    eg:D2 => 11010010
    计算方式:

13 / 2 = 6 -----余 1
6 / 2 = 3 ------余 0
3 / 2 = 1 ------余1
1 / 2 = 0 ------余 1
D转换为二进制数为:1101
2 / 2 = 1 ------余 0
1 / 2 = 0 ------余 1
2 转换为二进制数为:0010
end 转换的二进制数为: 11010010

说明: 十六进制转换二进制,每个高位数对应4个二进制高位数,每个低位数对应4个二进制低位数,每个十六进制数对2取余,余数从下往上排序,不足在高位补0.
图示:

十六进制662.jpg

4.十进制转八进制 或者 十六进制有两种方法

  • 间接法—把十进制转成二进制,然后再由二进制转成八进制或者十六进制
  • 直接法—把十进制转八进制或者十六进制按照除8或者16取余,直到商为0为止

    图示:
    进制73f0013f.jpg

5. 八进制或者十六进制转成十进制

计算方法:直接把八进制、十六进制数按权展开、相加即得十进制数

图示:
二八进制0----2d5628535687e.jpg

6. 十六进制转八进制

计算方式:先转成二进制 或 十进制,再互转。

推荐阅读更多精彩内容