如何进行进制转换(手动计算)

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
十六进制转二进制
和上述过程逆推过来就行