1

假设我想对以下两个浮点数进行加、减和/或乘以下列格式:

1 位符号

3 位指数(偏差 3)

6位尾数

有人可以简要解释一下我会怎么做吗?我尝试在网上搜索有用的资源,但我找不到任何太直观的东西。但是,我知道该程序通常应该非常简单。例如,这里有两个数字,我想对它们执行三个操作:

0 110 010001

1 010 010000

4

1 回答 1

3

首先,采用有效数字编码并在其前面加上“1.”,并将结果写入由符号位确定的符号。因此,对于您的示例数字,我们有:

+1.010001
-1.010000

但是,它们具有不同的尺度,因为它们具有不同的指数。第二个的指数比第一个小四(010 2与 110 2相比)。所以将其右移四位:

+1.010001
- .0001010000

现在两个有效数字具有相同的比例(指数 110 2),所以我们可以执行正常的算术运算,以二进制形式:

+1.010001
- .0001010000
_____________
+1.0011000000

接下来,将有效位四舍五入到可用位(七)。在这种情况下,尾随位为零,因此舍入不会改变任何内容:

+1.001100

在这一点上,如果它大于 2 (10 2 ) 或小于 1,我们可能有一个需要更多移动的有效数字。但是,这个有效数字正是我们想要的,在 1 和 2 之间。所以我们可以保留指数为 (110 2 )。

将符号转换回位,取前导“1”。关闭有效位,并将位放在一起:

0 110 001100

如果数字上溢或下溢正常指数范围,则会出现异常,但这里没有发生这些情况。

于 2013-02-19T20:55:48.370 回答