二进制 八进制 十进制 十六进制的相互转换(精简总结)

之前看到的都是铺垫这术语那术语的,看了半天,还不知道怎么处理。这里就根据各种文章和自己的理解总结一小下下,  不一定准确,省略一些概念等繁琐的陈述,直接上结论

1.二进制转八进制:以小数点为分界线,各自向左向右 每3位组成一组,不够位数的自动向高位或向低位补0,然后把每组的数字转换为八进制数就可以了,小数点的位置不变。

eg:(1101110.1011)2 分组后    (001)(101)(110).(101) (100) 然后把每组换算成8进制数就可以了(红色为补的0 (156.54)8

逆向思维:八进制转二进制  把每一位八进制数变为3位二进制数就行了(别说你不会啊!~)(小数点的位置不变)

2.二进制转十进制:按权相加法,即将二进制每位上的数乘以权,然后相加之和即是十进制数

eg: (1101110.1011)2 变成加法  26+25+0+23+22+21+0 . 2-1+0+2-3+2-4   = 64+32+0+8+4+2+0 . 0.5+0+0.125+0.0625  =110.6875      (红色为小数点

 

3.二进制转十六进制:以小数点为分界线,各自向左向右 每4位组成一组,不够位数的自动向高位或向低位补0,然后把每组的数字转换为十六进制数就可以了,小数点的位置不变。

eg:(1101110.1011)分组后 (0110)(1110).(1011)然后把每组换算成16进制数就可以了红色为补的0)(6E.B)16

逆向思维:十六进制转二进制  把每一位十六进制数变为4位的二进制数就行了(你会的!~)(小数点的位置不变)


4.十进制转二进制:(恩!~这个有点麻烦!)

分为 整数部分小数部分

1)整数部分:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。(好长一句,就是不断的除2,余数留着,商继续除,一直除到商为0,把余数反向连起来就OK了)

eg:110

      商     余数

110/2        55     0

55/2          27    1

27/2         13     1

13/2         6       1

6/2          3        0

3/2          1        1

1/2         0        1       (这步记着哦~)

此时商为0 了,把余数反向连起来1101110  (注意啊,跟示例2整数值是否一致呢。。。。!)

2)小数部分:乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分 
为零为止。如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位。换句话说就是0舍1入。读数要从前面的整数读到后面的整数(这句更长,分解一下,就是不断乘2,然后把整数留着,把剩下的小数继续乘2,一直到小数部分为0,把留下的整数部分顺序连起来就OK了!至于四舍五入的情况,你会遇到几次呢?呵呵!)

eg:0.6875

                     整数      小数

0.6875*2         1        .375

0.375*2           0        .75

0.75*2             1        .5

0.5*2               1         0

此时小数部分为0,把整数连起来1011(正序啊~)(注意啊,跟示例2小数数值是否一致呢。。。。!)

到此该结束了。怎么样,高端大气上档次吧。恩~(那还有八进制转十进制、转十六进制 |  十进制转八进制、十六进制 | 十六进制转八进制、转十进制呢???)

难道真要记住那些繁琐怪异凌乱变态的规则吗,一句话,剩下的全借二进制中转一下(当然你够厉害或者很** 就另当别论了,呵呵!)

如有错误请指出,反正我也不一定改!

原文地址:https://www.cnblogs.com/seer/p/3393520.html