0

可能问错了地方,但我会尝试。
我必须设计一个可以加/减浮点的电路,我尝试使用 IEE 754 标准中的有符号幅度数来实现它。它们非常大,所以我决定从较小的东西开始,以证明这个概念。
我在网上找到了一些算法来执行正数的加法和减法。
大多数看起来像这样: http: //meseec.ce.rit.edu/eecc250-winter99/250-1-27-2000.pdf
他们没有解释符号位会发生什么。现在我很困惑。根据我在网上找到的内容,执行起来没有区别:

A-B and A- (-B)

有人可以帮我提供一个详细解释算法的链接吗?

感谢所有答案我发现这个代数解释很有用http://howardhuang.us/teaching/cs231/08-Subtraction.pdf
目前我的电路执行 A+B(不考虑符号位)和 AB 就像 kfmfe04 写的一样。我对 B 的输入进行异或运算并加 1,所以我得到了 2C 的结果。
第二个 pdf 建议在 add/sub 操作中包含符号位。我会在早上试试这个。
花了这么多时间锻炼我的大脑,我觉得有点累,无法思考。现在我只是想知道我是否应该改变我的电路,以便:
切换添加/子按钮仍然对 B [a+(-b)] 进行异或,但在这部分之前,我将尾数与它们的符号异或以将它们转换为 2c。
这样我就可以涵盖负数减法(-A)-(-B)的情况。
不过听起来很复杂。

4

1 回答 1

0

基本原则是,在内部,你有一个加法和一个减法部分。这两个例程都只适用于正数。

下面,ADDSUB用于表示内部例程。您必须将操作分为不同的情况,具体取决于操作数是正数还是负数:

补充:

pos1 + pos2 => pos1 ADD pos1
pos1 + neg2 => pos1 SUB abs(neg2)
neg1 + pos2 => pos2 SUB abs(neg1)
neg1 + neg2 => - (abs(neg1) ADD abs(neg2))

减法:

pos1 - pos2 => pos1 SUB pos2
pos1 - neg2 => pos1 ADD abs(neg2)
neg1 - pos2 => - (abs(neg1) ADD pos2)
neg1 - neg2 => abs(neg2) SUB abs(neg1)

当然,您也可以简单地将“A - B”定义为“A + -B”,只实现加法的情况。

于 2011-12-30T22:28:35.377 回答