Floating point FPU-符合IEEE 754-2008标准的加法器功能
我试图开发一个FPU(符合IEEE754)作为毕业设计,我有一些和函数的问题。在过去的两周里,我在纸上调查和研究一些操作(其中很多),目的是了解这个标准是如何工作的。 所以,这就是问题所在……我很困惑,因为当我对同一个符号的数字进行加法时,我得到了正确的结果,但对相反符号的数字进行加法时,我遇到了问题。例如,将-1200.23和500.125相加。 ieee 754-2008数字的单精度表示为(符号位---指数----有效位): 指数为-1200.23的137和500.125的135。指数不相等,所以我们需要对500.125的有效位进行归一化,为此,我将有效位右移两倍(137-135=2)。500.125的新尾数为:Floating point FPU-符合IEEE 754-2008标准的加法器功能,floating-point,add,fpu,Floating Point,Add,Fpu,我试图开发一个FPU(符合IEEE754)作为毕业设计,我有一些和函数的问题。在过去的两周里,我在纸上调查和研究一些操作(其中很多),目的是了解这个标准是如何工作的。 所以,这就是问题所在……我很困惑,因为当我对同一个符号的数字进行加法时,我得到了正确的结果,但对相反符号的数字进行加法时,我遇到了问题。例如,将-1200.23和500.125相加。 ieee 754-2008数字的单精度表示为(符号位---指数----有效位): 指数为-1200.23的137和500.125的135。指数不相等
0.011 1110 1000 0100 0000 0000
***在继续之前,我想说我看到了一个类似的问题(它没有回答我的问题****
那么,下一步是添加有效位还是减去有效位?我已经尝试了两种方法,但仍然得到了错误的结果。。。
谢谢….这些数字是符号大小(只要指数对齐)和而不是两个的补码 如果它们有一个不同的符号,要将它们作为一个整体加上,你必须从较大的移位有效位减去较小的符号,并根据哪个符号的幅度较大而相应地调整符号。然后你将结果标准化 如果你从较小的数中减去较大的数,你会得到一个错误的,2的补码结果,你必须否定它,如果必要的话,改变它,使其再次为正,这将是太多不必要的工作 如果你加上两个移位的有效位,你肯定得不到你所需要的,就像
-4.1+3.2
既不会产生7.3
,也不会产生-7.3
。它会变成-(4.1-3.2)
或-0.9
换句话说,震级是通过从较大的(4.1
)中减去较小的(3.2
),并通过较大的符号(在这种情况下,-
)来确定的
另外,不要忘记处理某些格式中的隐藏位(处理前添加,处理后删除),还要注意正确处理NaN和非规范化
和不要右移对齐。这样会丢失位。左移对齐有效位,稍后进行规格化。中间结果可能会更大,但这会通过规格化和适当的四舍五入进行更正。这些数字是符号大小(一旦指数对齐)和不是两个的补语 如果它们有一个不同的符号,要将它们作为一个整体加上,你必须从较大的移位有效位减去较小的符号,并根据哪个符号的幅度较大而相应地调整符号。然后你将结果标准化 如果你从较小的数中减去较大的数,你会得到一个错误的,2的补码结果,你必须否定它,如果必要的话,改变它,使其再次为正,这将是太多不必要的工作 如果你加上两个移位的有效位,你肯定得不到你所需要的,就像
-4.1+3.2
既不会产生7.3
,也不会产生-7.3
。它会变成-(4.1-3.2)
或-0.9
换句话说,震级是通过从较大的(4.1
)中减去较小的(3.2
),并通过较大的符号(在这种情况下,-
)来确定的
另外,不要忘记处理某些格式中的隐藏位(处理前添加,处理后删除),还要注意正确处理NaN和非规范化
和不要右移对齐。这样会丢失位。向左移动对齐有效位,稍后进行规格化。中间结果可能会更大,但这会通过规格化和适当的舍入进行纠正。您没有提到任何关于2s补码的内容。如果为负数,2s补码该数字并执行add、 你确定要这样做吗?开发一个完整的符合IEEE标准的FPU不适合胆小的人,也可能不是一个需要询问如何执行简单任务(例如添加两个不同符号的数字)的项目。你没有提到任何关于2s补码的事。如果是负数,2s补码该数字并执行加法。你是吗你真的想这么做吗?开发一个符合IEEE标准的完整FPU不适合胆小的人,可能也不是一个需要询问如何执行简单任务(例如添加两个不同符号的数字)的项目。鲁迪非常感谢,对不起,我知道我似乎是一个初学者(也许,我是一个学前班的学生)但这一标准在头两周让我感到困惑,是的,我的硬件会考虑到特殊的数字,并感谢你提出的“不要向右移动”的建议。鲁迪非常感谢,对不起,我知道我似乎是一个初学者(也许,我是一个学前班的学生)但这一标准在头两周让我感到困惑,是的,我的硬件会考虑到这些特殊数字,并感谢您提出的“请勿向右移动”的建议。。
0.011 1110 1000 0100 0000 0000