各种进制转换学习小结

最近在学计算机组成原理,…算了,废话不多说直接总结了。

一. 二、八、十六进制转十进制

1. 示例:(111.101)2

  • 首先看整数部分,111,分解一下为1、1、1,这三个数字的权值分别为22、21和20(类似于十进制的111,三个数的权值分别为百位即102;十位即101;个位即100)。那么整数部分111就相当于十进制的22x1+21x1+20x1=7。
  • 再来看小数部分,0.101,同样分解为0.1、0.001,权值分别为2-1、2-3,那么小数部分的十进制表示就是2-1x1+2-3x1=0.625。
  • 整数部分和小数部分相加就是(7.625)10
    各种进制转换学习小结_第1张图片

2. 示例:(71.61)8

  • 首先看整数部分,71,分解一下为7、1,这三个数字的权值分别为81和80。那么整数部分71就相当于十进制的81x7+80x1=57。
  • 再来看小数部分,0.61,同样分解为0.6、0.01,权值分别为8-1、8-2,那么小数部分的十进制表示就是8-1x6+8-2x1=0.765625。
  • 整数部分和小数部分相加就是(57.765625)10
  • 十六进制同理不多BB,就是把每个位相应的权值乘以该位的值,相加所得结果就是十进制相应的值。

二.十进制转二、八、十六进制

1.示例:(53.321)10

转二进制:

  • 首先看整数部分53。我们知道25=32,24=16···那么我想说的就是53=25x1+24x1+22x1+20x1,是不是感觉和之前的权值x权数有点像?没错,这里2nx1就代表第n位为1,所以53对应的二进制数为(110101)2
  • 其次看小数部分0.321。0.321=2-2X1+2-4X1···(后面还有一堆,这里要说明的是小数的进制转换会存在一定的误差,后面保留多少位取决于需求,位数越多精度越高),所以小数部分我们取(0.0101)2
  • 那么所求即(110101.0101)2

其实就是相应进制转十进制的逆过程,从尽可能大的权值开始对原数进行分割,得到相应的权数,权值的指数部分就是相应权数所应放的位,例如53=25x1+24x1+22x1+20x1中,25x1的指数部分5就代表它所对应的位为小数点左边第六位,乘号右边的1就代表该位的值为1。这里实际还有两项没写,即23x0和21x0,那么小数点左边第4位和第二位为0,所以结果为110101.。转八进制、十六进制类似,在此不赘述。

三.二、八、十六进制之间互转

1.二转八、八转二

示例:(13.31)8转二进制

  • 把八进制的每一位当成一个十进制数然后转成一个三位的二进制数把所得结果按原序组合起来即可。
  • 具体操作:① 13–> { (1)10,(3)10 } --> { (001)2,(011)2 }–>(001011)2 。②31–>{ (3)10,(1)10 } --> { (011)2,(001)2 }–>(011001)2 。③按原序组合起来就是1011.011001
  • 附个图吧
    各种进制转换学习小结_第2张图片
  • 那反过来,二进制转八进制就是从小数点开始,整数部分依次向左,小数部分依次向右,取3位,转换成八进制数,最后将各个三位二进制数转换成八进制数的结果按原序组合好。当遇到最高位或最低位不够三位时:整数部分向左边,即高位补0;小数部分向右边即低位补0,而后再进行转换。
  • 二进制和十六进制互转就和八进制一样,只不过每次转换对应的位数是四位。三位、四位的原因是,对于二进制,三位能表示的数最大为7这和八进制一位所能表示的最大数一样,所以两者可等价替换。四位同理。

2.八转十六,十六转八

示例:(AF.BC)16

  • 八、十六互转需要拿二进制当跳板,即先转换成二进制再向目标进制转换其间利用到之前所述转换方法。
  • 以示例为例,直接上图了
    各种进制转换学习小结_第3张图片
  • 八转十六同理,不过是多补几个0的事情。

总结

进制的转换也可以用整数部分辗转相除、小数部分乘以n(n∈{2、8、16···})取余的方法进行转换,但我上面说的方法是另一种常用的方法,熟练了会更简单,转换速度也会陡然上升。

你可能感兴趣的:(计算机基础)