进制转换
将八进制数字 423.5176 转换成十进制:
423.5176 = 4×82 + 2×81 + 3×80 + 5×8-1 + 1×8-2 + 7×8-3 + 6×8-4 = 275.65576171875(十进制)
→将十进制转换为二进制、八进制、十六进制
整数部分和小数部分的算法不一样
整数部分:除 N 取余,逆序排列
- 将 N 作为除数,用十进制整数除以 N,可以得到一个商和余数;
- 保留余数,用商继续除以 N,又得到一个新的商和余数;
- …
- 如此反复进行,每次都保留余数,用商接着除以 N,直到商为 0 时为止。
先得余数作为 N 进制数的低位数字,后得余数作为 N 进制数的高位数字,依次排列,得到 N 进制数字。
例:十进制数字 36926 转换成八进制
小数部分:乘 N 取整,顺序排列
- 用 N 乘以十进制小数,得到一个积;
- 将积的整数部分取出,再用 N 乘以余下的小数部分,又得到一个新的积;
- 再将积的整数部分取出,继续用 N 乘以余下的小数部分;
- …
- 如此反复进行,每次都取出整数部分,用 N 接着乘以小数部分,直到积中的小数部分为 0,或者达到所要求的精度为止。
把取出的整数部分按顺序排列,先取出的整数作为 N 进制小数的高位数字,后取出的整数作为低位数字,得到 N 进制小数。
例:将十进制小数 0.930908203125 转换成八进制小数的过程
从图中得知,十进制小数 0.930908203125 转换成八进制小数的结果为 0.7345。
十进制小数 0.6875 转换成二进制小数的结果为 0.1011
如果一个数字既包含了整数部分又包含了小数部分,那么将整数部分和小数部分开,分别按照上面的方法完成转换, 然后再合并在一起即可。例如:
十进制数字 36926.930908203125 转换成八进制的结果为 110076.7345;
十进制数字 42.6875 转换成二进制的结果为 101010.1011。
注意,十进制小数转换成其他进制小数时,结果有可能是一个无限位的小数。请看下面的例子:
十进制 0.51 对应的二进制为 0.100000101000111101011100001010001111010111…,是一个循环小数;
十进制 0.72 对应的二进制为 0.1011100001010001111010111000010100011110…,是一个循环小数;