4

我正在阅读我的笔记并发现以下内容:

For every real number there are various ways of representing
it in such a way. Therefore, computers fix two parameters (so
they do not need to be stored, and arithmetic is more
convenient):

- the base b (normally, it is 2, 10 or 16) and
- the position of the decimal (or binary) point (by normalising
the mantissa such that it satisfies 1/b ≤ m < 1)

Example: Normalised representations for r := 12.25 are,
- for b = 2, r = 1 × 0.110001 × 2^4,
- for b = 10, r = 1 × 0.1225 × 10^2 and,
- for b = 16, r = 1 × 0.C4 × 16^1.

对于值 12.25,您如何计算以 2、10 和 16 为底的浮点数。我不太确定讲师是如何得出 b = 2、b = 10 和 b = 16 的答案的。

4

2 回答 2

5

从示例中,您的讲师对“标准化”的定义似乎是将数字表示为 +1 或 -1 乘以某个 x 乘以底数的整数幂,其中 x 是小于 1 的最大值乘积等于表示的数字。此外,x 以底数表示。

例如,考虑以 2 为底的 12.25。暂时以 10 为底,我们可以将 12.25 表示为 1×12.25×2 0或 1×6.125×2 1或 1×3.0625×2 2或 1×1.53125×2 3或 1 ×.765625×2 4或 1×.3828125×2 5,以此类推。其中,我们可以看到 .765625 是适合该表格的小于 1 的最大值。因此,我们将 12.25 表示为 1×.765625×2 4。然后我们需要将 .765625 转换为基数 2。

您可能在之前的课程中已经介绍过,但我们可以这样做:将 .765625 乘以 2(得到 1.53125)并将整数部分 (1) 与分数 (.53125) 分开。将分数乘以 2 (1.0625) 并再次分离(1 和 .0625)。重复新的分数(0 和 .125)。继续重复直到分数为零或者你有任意数量的数字:0 和 .25、0 和 .5、1 和 0。列出你得到的整数:1 1 0 0 0 1。现在是基数为二的数字你想要的是一个句点,后面跟着这些数字:.110001。因此,以 2 为底的 12.25,根据您的讲师的定义进行归一化,是 1×.110001×2 4

找到 x 的正确值的规则可能是:从指数 0 开始。如果 x 大于 1,则将其除以底数并在指数上加一。如果 x 小于 1/base,则将其乘以基数并从指数中减去 1。重复此操作,直到 x 介于 1/base 和 1 之间(包括 1/base 但不包括 1,所以如果 x 等于 1/base 则停止)。

对于 12.25 和十进制:从指数 0 开始。将 12.25 除以 10(得到 1.225)并将指数增加到 1。再次除以 (.1225) 并将指数增加到 2。现在我们停止,因为 .1225 介于 1/10 和1.

对于 12.25 和基数 16:从指数 0 开始。将 12.25 除以 16(得到 .765625)并将指数增加到 1。现在停止,因为 .765625 在 1/16 和 1 之间。

要将 .765625 转换为基数 16:将 .765625 乘以 16 得到整数 12(数字 C)和小数 0.25。将 0.25 乘以 16 得到整数 4 和小数 0。小数为 0,所以停止。基数为 16 的数字是 .C4,所以整个形式是 1×.C4×2 1

有时,将使用“标准化”的其他定义。通常,我们不是将 x 调整到 1/base 和 1 之间,而是将 x 调整到 1 和 b 之间。

于 2012-04-23T13:48:24.083 回答
4

我们试图以各种基数表示数字 12.25。所以没有标准化。

对于二进制:

   12    - > 1100
   0.25  - > .01  (1 * (1/2)^2)
so 12.25   = 1100.01

对于十六进制:

   12    - > C
   0.25  - > .4   (4 * (1/16)^1)
so 12.25   = C.4 

然后小数点与指数项一起移动。

希望有帮助。

我想这不是答案,因为我没有描述任何方法。因此,这里有一些指向 MathForums 上有关该主题的讨论的链接。

带二进制数的长除法

浮点二进制分数

Math 博士关于基础的常见问题解答

我仍在寻找 Base 16 浮点除法的好指南

Base ConvertDigit Convert是可以处理浮点数的在线基础转换器。

这些站点使用 Javascript,因此可以访问正在使用的算法。

于 2012-04-20T10:16:55.843 回答