可能是错误的地方,但我会尝试
我必须设计一个可以加/减浮点的电路
我试图在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(忽略符号位)和A-B就像kfmfe04写的那样。我正在对B的输入进行异或,然后加1,所以我将结果输入2C。
第二个pdf建议在add / sub操作中包含符号位。我会在早上尝试这个。
花了这么多时间锻炼我的大脑,我觉得有点累,不能直接思考。现在我只是想知道我是否应该改变我的电路以便:
切换加/子按钮仍然对B [a +( - b)]进行异或,但在此部分之前我将它们的符号与mantissas进行异或来转换它们进入2c。
这样我可以覆盖负数减法(-A) - ( - B)的情况。
听起来很复杂。
答案 0 :(得分:0)
基本原则是,在内部,你有一个加法和减法部分。这两个例程只适用于正数。
下面,ADD
和SUB
用于表示内部例程。您必须将操作划分为不同的情况,具体取决于操作数是正还是负:
补充:
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”,并仅实现添加的情况。