《计算机组成与体系结构(原书第4版)》 —2.3.2 小数的转换
2.3.2 小数的转换
任何基数系统中的小数在任何其他基数系统中可以近似为这个基数的负幂次方。基数小数点将一个数字的整数部分与小数部分分隔开。在十进制系统中,小数点被称为十进制小数点。二进制小数有二进制小数点。
在一个基数小数点的右边包含循环数字串的小数在另一个基上不一定有循环的数字序列。例如,2/3是一个循环的十进制小数,但在三进制系统中它的结果是0.23(2×3-1=2×1/3)。
转换整数时使用的重复减法和除留余数法的类似方法可以在不同基数之间转换小数。例2.5显示了如何使用重复减法把十进制数字转换到五进制。
例2.5转换十进制数字0.430410到以5为基的数字。
从上到下读,得到:0.430410=0.20345。
因为除留余数方法使用基数的正幂数来转换整数,所以我们将使用乘法来转换小数,因为它们以基数的负幂数表示。然而,不是像上面操作的那样找余数,我们只使用乘以基数之后得到的整数部分。答案是从上读到下而不是从下到上。例2.6说明了该过程。
例2.6转换十进制数字0.430410到以5为基的数字。
从上到下读,得到:0.430410=0.20345。
这个例子被设计成在执行几步后就停止了。通常情况下,事情并不那么顺利,最终以循环小数结束。大多数计算机系统有专门的舍入算法,以提供一个可预测的准确度。然而,为了清楚起见,当所需的精度已经达到时,我们将简单地丢弃(或截断)后面的数字,如例2.7所示。
例2.7转换十进制数字0.3437510为二进制数字,保留二进制小数点后4位。
从上到下读,得到:0.3437510=0.01012。
刚刚描述的方法可以直接将任何基数中的数字转换到其他基数,如从基数4到基数3(见例2.8)。然而,在大多数情况下,首先转换为基数10然后再到所需的基数,这会更快和更准确,当在两个幂的基数之间转换时这个规则是一个例外,关于这一点会在下一节看到。
例2.8转换四进制数31214到以3为基的数。
- 点赞
- 收藏
- 关注作者
评论(0)