Floating point FPU-符合IEEE 754-2008标准的加法器功能

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。指数不相等

我试图开发一个FPU(符合IEEE754)作为毕业设计,我有一些和函数的问题。在过去的两周里,我在纸上调查和研究一些操作(其中很多),目的是了解这个标准是如何工作的。 所以,这就是问题所在……我很困惑,因为当我对同一个符号的数字进行加法时,我得到了正确的结果,但对相反符号的数字进行加法时,我遇到了问题。例如,将-1200.23和500.125相加。 ieee 754-2008数字的单精度表示为(符号位---指数----有效位):

指数为-1200.23的137和500.125的135。指数不相等,所以我们需要对500.125的有效位进行归一化,为此,我将有效位右移两倍(137-135=2)。500.125的新尾数为:

 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