执行以下 1 的补码定点整数算术运算
Posted
技术标签:
【中文标题】执行以下 1 的补码定点整数算术运算【英文标题】:Perform the following 1's complement fixed-point integer arithmetic operations 【发布时间】:2012-02-27 01:19:20 【问题描述】:这个问题来自我的数字逻辑课,但我不明白。请帮助我理解它在问我什么。
假设 A1 和 A2 是八进制简写。
i) A3= A1+A2 ii) A3= A1-A2,并注意每种情况下是否发生幅度溢出:(提示:在另一个八进制简写上使用 7 的补码算术),
我以为你只在想要做减法时才取补数。我不能只以八进制形式进行减法吗?有人可以帮我理解这些问题是什么吗?
【问题讨论】:
【参考方案1】:这是一个技巧问题;或者你错误地引用了它。我怀疑你的导师会问前者;所以肯定是后者。
回想一下,1 的补码和是两个操作数(此处为 A1 和 A2)的 XOR。并且在 1s 补码世界中没有进位,因此没有幅度溢出之类的东西。
【讨论】:
我完全复制了它,所以它一定是一个技巧问题。当他说 1 的补码时,这是否意味着我已经反转了 A1 和 A1 二进制的 1 和 0,然后将它们相加?提示使用 7 的补码是什么意思? 忘记 1s 补码中的代数“加”的概念。两个操作数的 1 补码“加法”恰好是“操作数 1 XOR 操作数 2”。我不知道他所说的“7s 补码”是什么意思。也许它与八进制有关,但对我来说这没有意义。我想存在“7s 补码”表示,但我必须相信这是“2s 补码”的错字。 A1 和 A2 不是八进制数,它们的范围是 0-7。如果它们是十六进制,那么可能的八进制表示是 A1: 0241; A2:0242。但即使这样也没有任何意义。【参考方案2】:我不确定晦涩的“八进制速记”/“7s-complement”如何发挥作用,但这里是“传统”解决方案:
i) A3 = A1+A2
1
2631
84268421
01000000
A1=10100001 = -94
+ A2=10100010 = -93
------------
A3=01000011 = -187 < -127 so we know this is wrong
co: 10100000
CO = 1 which also indicates result is wrong
ii) A3 = A1-A2
1000000
A1=10100001 = -33
- A2=10100010 = -34
------------
A3=????????? = 1 < 127 so we know this is right
==
0000010
A1=10100001
+ A2=01011101
------------
A3=11111110 = -67
co: 00000001 = 1
CO = 0 which also indicates result is right
【讨论】:
以上是关于执行以下 1 的补码定点整数算术运算的主要内容,如果未能解决你的问题,请参考以下文章