Binary ieee格式A到格式B的取整

Binary ieee格式A到格式B的取整,binary,rounding,ieee,Binary,Rounding,Ieee,所以我有两个基于IEEE浮点格式的9位浮点表示 格式A:1个符号位,k=5个指数位,n=3个分数位,偏差为15 格式B:1个符号位,k=4个指数位,n=4个分数位,偏差为7 我假设将格式A转换为格式B,并使用向+无穷大舍入。 他们给出的示例问题是: 格式A 比特数:101111001 值:-9/8 格式B 比特数:101110010 值:-9/8 我完全理解如何将二进制形式转换为十进制形式,但我完全不知道他们是如何将101111001转换为101110010的 任何帮助都将是惊人的。谢谢 切换时

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

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

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

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

格式A

比特数:101111001

值:-9/8

格式B

比特数:101110010

值:-9/8

我完全理解如何将二进制形式转换为十进制形式,但我完全不知道他们是如何将101111001转换为101110010的


任何帮助都将是惊人的。谢谢

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

格式A的偏差为15,指数二进制值为15(01111),因此,您可以采用二进制值-偏差,就像您试图获得IEEE值一样;因此,给你零。计算IEEE值时,您的方程如下所示:

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

现在我们转换为格式B

格式B有4个指数位。所以我们取方程的指数,即0,然后用B偏倚求出你的位串需要的值

位字符串值-偏差=等式中的指数。这就像在查找位字符串的IEEE值时查找指数一样

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

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

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

现在我们必须得到格式B的长度为4的分数位字符串。我们有001,需要在字符串的最后一位添加一些位,所以我们有001形式的东西,其中u代表添加的新位。由于要使精度尽可能接近原始格式,因此将其设置为0。永远不要将其设为1,因为这会将分数位字符串向上更改2倍,从而失去精度

现在,我们将其组合在一起得到:0 0111 0010,这是示例的最终答案

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

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

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


  • 如果您同时理解二进制到十进制和十进制到二进制,那么A到十进制到B应该不是问题