执行以下1的补码定点整数算术运算

3
这个问题来自我的数字逻辑课程,但我不理解。请帮助我理解它在问什么。
假设A1和A2是八进制简写。
执行以下1的补码定点整数算术操作,并注意每种情况下是否发生了幅值溢出:(提示:在另一个八进制简写上使用7的补码算术)
i)A3= A1+A2 ii)A3= A1-A2
我以为只有在想要进行减法时才需要补码。我不能只用八进制形式做减法吗?谁能帮我理解这些问题在问什么?
2个回答

0

我不确定关于晦涩的"八进制缩写"/"7补码"如何发挥作用,但这里是"传统"解决方案:

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

0

这是一个巧妙的问题;或者你引用错了。我怀疑你的教练会问前者,所以一定是后者。

请记住,1s 补码和是两个操作数(这里是 A1 和 A2)的异或。在 1s 补码世界中,没有进位,因此不存在幅值溢出这样的事情。


我完全复制了它,所以这一定是个诡计问题。当他说“1的补码”时,是指我必须倒转A1和A1二进制数中的1和0,然后将它们相加吗?提示中提到使用“7的补码”是什么意思? - Learning C
忘掉1s补码中代数“加”的概念。两个操作数的1s补码“加”就是“操作数1 XOR 操作数2”。我不知道他所说的“7s补码”是什么意思。也许它与八进制有关,但对我来说没有意义。我想可能存在“7s补码”表示法,但我必须相信那是“2s补码”的一个打字错误。 - Pete Wilson
A1和A2不是八进制数字,它们的范围在0-7之间。如果它们是十六进制,则可能的八进制表示为A1:0241;A2:0242。但即使如此,这也毫无意义。 - Pete Wilson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接