实数:规范化
外观
在存储数字时,我们需要以最有效的方式使用给定的空间。例如,如果我们取一个十进制浮点数,例如
(Planck's constant)
如果我们将它重写为
(Planck's constant)
那么你可以看到表示法多占了 2 个字符,即两个额外的 0,即使它代表的是完全相同的数字。当你不担心数字占用多少字符时,这可能是可以接受的,但在二进制和有限的计算机内存中,数字占用的空间非常重要。我们需要尽可能高效的表示法。在给定的位数内,数字的规范化表示将以可能的最高精度显示数字。总之,规范化数字
- 只给出数字的一种表示。
- 节省空间。
- 在给定的位数内给出数字最精确的表示。
一般来说:当处理二进制浮点数时,必须确保前两位不同。也就是说
绝对 不
让我们看一个例子。取一个二进制浮点数
我们可以看到这个数字以 开头。我们需要将它更改为 才能使它规范化。为此,我们需要将小数点向右移动一位,为了保留未规范化数字所代表的相同数字,我们需要相应地更改指数。将小数点向右移动一位来规范化数字,我们需要将指数更改为向左移动一位以进行补偿。因此从当前指数中减去一
为了确保你已正确规范化,请检查
让我们尝试一个更复杂的例子
为了使尾数规范化,我们需要将小数点向右移动两位。为了保持与原始浮点数相同的数值,我们需要将指数调整为小两位。
现在检查新的规范化值是否与原始值相同。
确保规范化数字不会改变符号位。例如 0.0001 应该变为 0.100,而不是 1.000。 |
总结:规范化数字
|
练习:规范化问题 以下数字是否规范化? 0.010000000 111111 答案 否,因为它以 0.0 开头 0.111111000 111111 答案 是,因为它以 0.1 开头 1.100000010 111111 答案 否,因为它以 1.1 开头 规范化以下数字 0 010000000 111111 答案
00.10000000 111110 = 0.100000000 111110 0 001101000 000110 答案
000.1101000 000100 = 0.110100000 000100 1 111111010 000011 答案
111111.010 111101 = 1.01000000 111101 |