2011-12-30 76 views
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
目前我电路执行就像kfmfe04写这个代数解释A + B(忽略符号位)和A-B。我XORING B的输入和加1,所以我得到2C的结果。
第二个pdf建议在添加/子操作中包含符号位。我会在早上尝试这个。
花了这么多时间锻炼我的大脑,我感到有点疲惫,不能直视。现在我只是想知道是否应该改变我的电路:
切换添加/子按钮仍然与B [a +( - b)]异或,然后在这部分之前我将它们的符号与它们的符号异或以将它们转换为2c。
这样我可以覆盖负数减法(-A) - ( - B)的情况。
听起来很复杂。

+0

“A - ( - B)'是代数的”A + B“。 “根据我在网上找到的信息,没有区别”需要一些支持链接,引用或参考。如果你能解释你在哪看到这个,这将有所帮助。 – 2011-12-30 22:15:51

+0

你是不是指'A - B = A +(-B)'? – kfmfe04 2011-12-30 22:20:29

+0

我发现这个代数解释很有用http://howardhuang.us/teaching/cs231/08-Subtraction.pdf – user682217 2011-12-31 00:47:56

回答

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”并且仅实现用于加法的情况。