先拿转二进制说事,
八进制和十六进制都是这么算,只是稍有区别
先转换整数部分57
写出二进制各位上的基数:方法是从个位1开始,逐位向左写,每位都是右边位乘以2(二进制所以乘以2),写到比57大为止:
64 32 16 8 4 2 1
0 1 1 1 0 0 1
用57除以最高位64得到商和
余数=57/64=0[57],将商写到64对应的位下面
继续用上步的余数进行计算=57/32=1[25],将1写到32对应位下面
25/16=1[9],9/8=1[1],1/4=0[1],1/2=0[1],1/1=1[0],运算直到余数为0停止,如果还有位没算,则全填0,57转成二进制是111001
下面转小数0.34
0.34*2=0.68,因为是二进制所以乘以2,得到的结果整数部分就是二进制小数点后面第1位[111001.0]
接着用上步得数的小数部分继续算:0.68*2=1.36,整数部分1是小数第2位[111001.01]
0.36*2=0.72[111001.010],0.72*2=1.44[111001.0101],0.44*2=0.88[111001.01010],0.88*2=1.76[111001.010101],0.76*2=1.52[111001.0101011],这个计算直到小数部分为0或者达到要求的位数为止,由于0.34的尾数不是5,所以用
二进制转换是无限长的小数,不能精确表示
57.34转换成二进制是111001.0101011,转八进制和十六进制用上述方法可以笔算,区别在于上边乘以2的地方换成乘以8和16
有了57.34转成二进制的结果后,转
8进制和十六进制有简单方法:
1位8进制数可对应3位
二进制数,1位
十六进制数可对应4位二进制数
转八进制:111001.0101011=[111][001].[010][101][100]=71.254
转十六进制:111001.0101011=[0011][1001].[0101][0110]=39.56