首页 文章

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

提问于
浏览
1

我正在尝试开发一个FPU(符合ieee 754)作为毕业项目,我在sum函数方面遇到了一些麻烦 . 在过去的两周里,我正在调查并在纸上进行一些操作(其中很多),目的是了解这个标准是如何工作的 . 所以,这是一个问题....我很困惑,因为当我用相同的符号执行数字添加时,我得到了正确的结果但是在添加符号相反的数字时我遇到了问题 . 例如,添加-1200.23和500.125 . ieee 754-2008数字的单精度表示是(符号位---指数----有效数字):

-1200.23 = 1 --- 10001001 --- 1.001 0110 0000 0111 0101 1100 
 500.125 = 0 --- 10000111 --- 1.111 1010 0001 0000 0000 0000

指数为-1200.23为137,500.125为135 . 指数不相等所以我们需要将500.125的有效数归一化,为此我向右移两次有效数(137-135 = 2) . 500.125的新尾数是:

0.011 1110 1000 0100 0000 0000

在继续之前我想说我见过类似的问题(How to subtract IEEE 754 numbers?but)它没有回答我的问题**

那么,下一步是添加有效数字还是减去有效数字?我试过两种方式,但我的结果仍然不正确......谢谢......

1 回答

  • 0

    这些数字是 sign-magnitude (一旦指数对齐)和 not two's complement .

    如果他们有一个不同的符号,作为一个整体,你必须 subtract smaller from the larger 移位有效数字并相应地调整符号,具体取决于哪一个具有更大的幅度 . 然后规范化结果 .

    如果从较小的值中减去较大的值,则得到一个错误的,两个补码的结果,你必须否定它,如果有必要的话,转移,再次使它成为正数,这将是太多不必要的工作 .

    如果你添加两个移位的有效数字,你肯定得不到你需要的东西,就像 -4.1 + 3.2 既不会导致 7.3 ,也不会导致 -7.3 . 它变成 -(4.1 - 3.2) ,或 -0.9 .

    换句话说,通过从较大的( 4.1 )中减去较小的值来确定幅度,并且通过较大的符号(在这种情况下, - )减去符号 .

    另外,不要忘记处理(在处理之前添加并在之后删除)某些格式的隐藏位 . 并注意正确处理NaN和非正规 .

    do not shift right 对齐 . 那样你就会失去一些东西 . 向左移动以对齐有效位数并稍后进行标准化 . 中间结果可能更大,但这可以通过归一化和适当的舍入来校正 .

相关问题