一:十进制与二进制之间的转换
1.整数部分:
例:将十进制的168转换为二进制(结果:10101000)
第一步,将168除以2,商84,余数为0。
第二步,将商84除以2,商42余数为0。
第三步,将商42除以2,商21余数为0。
第四步,将商21除以2,商10余数为1。
第五步,将商10除以2,商5余数为0。
第六步,将商5除以2,商2余数为1。
第七步,将商2除以2,商1余数为0。
第八步,将商1除以2,商0余数为1。
第九步,读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,即10101000
2.小数部分
例1:将0.45转换为二进制(结果:0.0111001100)
0.45x2=0.9 取整0,小数部分是0.9
0.9x2=1.8 取整1,小数部分是0.8
0.8x2=1.6 取整1,小数部分是0.6
0.6x2=1.2 取整1,小数部分是0.2
0.2x2=0.4 取整0,小数部分是0.4
0.4x2=0.8 取整0,小数部分是0.8,循环
所以0.45的二进制是0.0111001100
3. 二进制转换为十进制 不分整数和小数部分
例1:将101.101转换为十进制(结果:5.625)
101.101
=1*2^2+0*2^1+1*2^0+1*2^(-1)+0*2^(-2)+1*2^(-3)
=4+0+1+1/2+0+1/8
=5.625
二:二进制与八进制之间的转换
1、(1) 二进制转换为八进制
方法:取三合一法,即从二进制的小数点为分界点,向左(向右)每三位取成一位,接着将这三位二进制按权相加,得到的数就是一位八位二进制数,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的八进制数。如果向左(向右)取三位后,取到最高(最低)位时候,如果无法凑足三位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足三位。
例1.将二进制数101110.101转换为八进制(结果56.5)
二进制转换成八进制是从小数点往左或右三个一看,若不够3个整数部分最前面以0补齐,小数点部分在最后补0(就像100如果要用四位数表示还不能影响数值0100),
110是6,110 = 1 * 2^2(1的2*2次方) + 1 * 2^1(1的2*1次方) + 0 * 2^0(0的2*0次方) = 6,
101是5,101 = 1 * 2^2 + 0 * 2^1 + 1 * 2^0 = 5,
101是5。
例如:1101.1转换为八进制(结果:15.4)
小数点左三位数 101,第一个1用001替补,最后一个1用100替补
001 = 0的2*2次方 + 0的2*1次方 + 1的2*0次方 = 0+0+1 = 1,
101 = 1的2*2次方 + 0的2*1次方 + 1的2*0次方 = 4+0+1 = 5,
100 = 1的2*2次方 + 0的2*1次方 + 0的2*0次方 = 4+0+0 = 4。
所以答案是56.5
2、(2) 将八进制转换为二进制
方法:取一分三法,即将一位八进制数分解成三位二进制数,用三位二进制按权相加去凑这位八进制数,小数点位置照旧
例:1.将八进制数67.54转换为二进制
6 = 110,7=111,5=101,4=100
so:
67.54 = 110111.101100 四舍五入= 110111.1011
三、 二进制与十六进制的转换
(1) 二进制转换为十六进制
方法:取四合一法,即从二进制的小数点为分界点,向左(向右)每四位取成一位,接着将这四位二进制按权相加,得到的数就是一位十六位二进制数,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的十六进制数。如果向左(向右)取四位后,取到最高(最低)位时候,如果无法凑足四位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足四位。
1.例:将二进制11101001.1011转换为十六进制(结果E9.B)
十进制: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
十六进制: 0 1 2 3 4 5 6 7 8 9 A B C D E F
so:
1110 = 1*2^3 + 1*2^2 + 1*2^1 + 0*2^0 = 8+4+2+0 = 14 = E
1001 = 1*2^3 + 0*2^2 + 0*2^1 + 1*2^0 = 8+0+0+1 = 9
1011 = 1*2^3 + 0*2*2 + 1*2^1 + 1*2^0 = 8+0+2+1=11 = B
结果 = E9.B
(2)将十六进制转换为二进制
方法:取一分四法,即将一位十六进制数分解成四位二进制数,用四位二进制按权相加去凑这位十六进制数,小数点位置照旧。
例1:将十六进制6E.2转换为二进制(结果01101110.0010即110110.001)
详细参考文章:https://www.sojson.com/hexconvert.html
原码,反码,补码的转换
以此图为例:
先得到原码,负数的反码就是除第一位,其他都反过来,补码就是反码+1
正数的反码补码都是原码