avatar

tetsai

原创声明

本文由tetsai原创,转载请注明来源

二进制转十进制

使用位权展开相加法

每一位乘以2的权次方相加就行了,比如

100011101,十进制是:+2^8*1+2^7*0+2^6*0+2^5*0+2^4*1+2^3*1+2^2*1+2^1*0+2^0*1

推广:如果是其它进制转十进制,就把2改成对应的进制数字,比如十六进制就是16就可以了

十进制转二进制

使用除二取余法,如果是整数部分就是除2顺取余数,小数部分就是乘2逆取余

比如162.45的二进制,先算整数部分,就是

162/2 余 0 得81

81/2 余 1 得40

40/2 余 0 得20

20/2 余 0 得10

10/2 余 0 得5

5/2 余1 得2

2/2 余0 得 1

1/2 余1 得0

0/2 余0 得0

0/2 余0 得0

0/2 全是0,无限往下算,无限的0,就不用算了,因为高位的0是没有意义的,比如00010和10是一样大的,由此可知,从下往上看,是从高位开始的,因此答案就是

000..(无限个0)..10100010=10100010

答案正确

那么小数部分.45的二进制,就是(我讨厌做乘法运算,感觉好麻烦)

0.45×2=0.90 所以是0

0.90×2=1.80 所以是1,1被扣下了,只剩下0.8

0.80×2=1.60 所以是1

0.60×2=1.20 所以是1

0.20×2=0.40 所以是0

0.40×2=0.80 所以是...等等不对劲这不就循环了?

呵呵,算屁...啊!

答案是,是0.01110(然后继*01110,无限循环..)

算了,我直接引用大佬的话吧

将0.125换算为二进制

第一步,将0.125乘以2,得0.25,则整数部分为0,小数部分为0.25。
第二步, 将小数部分0.25乘以2,得0.5,则整数部分为0,小数部分为0.5。
第三步, 将小数部分0.5乘以2,得1.0,则整数部分为1,小数部分为0.0。
第四步,读数,从第一位读起,读到最后一位,即为0.001。

所以0.125的二进制是0.001,加上整数部分即可...说实话这个有点迷。。。找到原因了,在这里

推广:如果是十六进制,就别乘以2,要乘以16,然后按照相同的方法就行了!其它进制同理!

二进制转十六进制

将二进制四个为一组,比如

100011101分成0001,0001,1101(从低位往高位数,每隔4位加个逗号)

然后1101的十进制是8+4+1=13,所以十六进制是0x0C

0001的十进制是1所以十六进制是0x01

然后组合起来就是0001,0001,1101=0x01010C

十六进制转二进制

和上述过程逆推过来就行

发表评论

电子邮件地址不会被公开。 必填项已用*标注