ieee格式A通过舍入

时间:2015-10-15 19:51:23

标签: binary rounding ieee

所以我有两个基于IEEE浮点格式的9位浮点表示。

格式A:1个符号位,k = 5个指数位,n = 3个分数位,偏差为15

格式B:1个符号位,k = 4个指数位,n = 4个分数位,偏差为7

我想将格式A转换为格式B并使用舍入+无穷大。 他们给出的示例问题是:

格式A

位:1 01111 001

值:-9/8

格式B

位:1 0111 0010

值:-9/8

我完全理解如何将二进制转换为十进制形式,但我完全迷失了他们如何将1 01111 001转换为1 0111 0010。

任何帮助都会很棒。谢谢!

1 个答案:

答案 0 :(得分:1)

切换时,指数位是主要焦点,因为您需要使用每种格式的不同偏置进行转换。因此,请看示例:

FORMAT A的偏差为15,指数二进制值为15(01111),因此采用二进制值-偏差类似于尝试获得IEEE值时的偏差;因此,给你零。在计算IEEE值时,您的公式如下所示:

2 ^ 0 * 1.001。 1.001是小数位值的1倍。

现在,我们转换为格式B。

FORMAT B具有4个指数位。因此,我们采用等式的指数为0,并使用B偏差来查找您的位串需要是什么。

位字符串值-bias =公式中的指数。就像在找到位串的IEEE值时找到指数一样。

位串值= 0 +偏差= 0 + 7,因为B偏差为7。

因此,我们需要的位字符串值为7:0111

结合到目前为止我们得到的:0(符号位),0111(指数位),001(小数位)== 0 0111 001。

现在我们必须为FORMAT B获取长度为4的小数位字符串。我们有001,并且需要在字符串的最后一位添加一些位,因此我们以001_的形式表示,其中_表示新的位添加。由于要使精度保持尽可能接近原始格式,因此将其设置为0。永远不要将其设置为1,因为这会将小数位字符串的系数提高2倍,从而降低了精度。

现在,我们将所有这些组合在一起以获得:0 0111 0010,这是示例的最终答案。

因此,在不同格式之间进行转换时,您需要记住两个简单的准则:

  1. 如果要添加位:3-> 4个小数位,则末尾添加零以使位字符串达到所需的长度。

  2. 如果要“删除”位:4-> 3个小数位,则最右边(最低有效)位将丢失。因此0111-> 011(1),其中(1)是“已删除的位”。