1.1.2 数制间的互相转换
二进制数便于计算机存储和运算,但二进制表示的数不直观,不便于人们记忆和使用,此时可以用十六进制来表示二进制,而人们生产生活已习惯的十进制数最常用,因此通常需要在这三种数制之间进行转换。
1.二/十进制互相转换数
(1)二进制数转换成十进制数
将二进制数进行权展开,并按乘权相加的规则进行运算,得到的和即为对应十进制数,如二进制数10110转换成十进制过程如下:
[10110]2=1×24+0×23+1×22+1×21+0×20=[22]10
10110.11B=1×24+0×23+1×22+1×21+0×20+1×2-1+1×2-2=22.75D
(2)十进制数转换成二进制数
十进制数转换成二进制数复杂些,需要进行除法取余运算,其规则可以概括为“除二取余倒记数”,即将需要转换的十进制数除以2,取其余数,其商再除以2再取余数,直到除尽为止,将所有余数按逆序排列便可得到其二进制数,如456D转换成二进制数的过程为
456/2, 商为228, 余数为0
228/2, 商为114, 余数为0
114/2, 商为57, 余数为0
57/2, 商为28, 余数为1
28/2, 商为14, 余数为0
14/2, 商为7, 余数为0
7/2, 商为3, 余数为1
3/2, 商为1, 余数为1
将余数结果按逆序排列,将最后一次除法运算的商写在最高位,转换之后的二进制数为111001000B。显然,将该二进制数乘权相加其结果为456D。此外,如果二进制数有小数部分,则小数部分和整数部分分开转换,整数部分按“除二取余倒记数”进行转换,小数部分按“乘二取整顺记数”进行转换,即将小数部分乘以2取商的整数部分(小数点右边数),再将商的小数部分(小数点左边)乘以2,依次不断重复,直到满足所需计数精度即可,将限于篇幅不再赘述。
2.二/十六进制互相转换
二进制数与十六进制数之间的转换比较简单。将二进制数转换成十六进制数的方法为将二进制数从右到左,每四个排成一组,不足四个的在左边补零,每组4个二进制数乘权相加即可得到相应的十进制数,如10011011B,转换成十六进制为
所以结果为9BH。
十六进制数转换成二进制数为二进制数转换成十六进制数的逆过程,将每一位十六进制数转成4位二进制数即可,例如137FH,转换成二进制数为
1=0001B
3=0011B
7=0111B
F=1111B
故结果为0001001101111111B。
3.十/十六进制互相转换
十进制数转换成十六进制数与十进制数转换成二进制数类似,为除16取余数逆记数,将最后一次除法运算的商写在最高位。如500D转换成十六进数制其过程如下:
500/16,商为31,余数为4
31/16,商为1,余数为15
因此其结果为1F4H。
十六进制数转换成十进制数与二进制数转换成十进制数类似,按乘权相加法进行转换,如3F45H转换成十进制的过程为
3×163+F×162+4×161+5×160=12288+3840+64+5=16197D