Binary 我有一个关于有符号二进制计算的问题

Binary 我有一个关于有符号二进制计算的问题,binary,logic,signed,Binary,Logic,Signed,假设我有两个带符号的二进制: A:1100 B:1000 我想从A中减去B 在2补充B之后,这将是: 1100+1000='1'0100 我认为这会产生溢出,因为A和B的符号是负数,而答案是正数,但我的工作表答案键则相反 我的问题是,溢出是1还是答案键错了?此计算中没有溢出 1100是-4十进制 1000是-8十进制 -4-(-8)=4 因此,结果是0100,没有任何溢出。(所有涉及的值都可表示为带符号的4位,涵盖范围为-8到7) 请注意,如果操作数具有相同的符号,减法永远不会溢出(既不会溢

假设我有两个带符号的二进制:

A:1100 B:1000

我想从A中减去B

在2补充B之后,这将是: 1100+1000='1'0100

我认为这会产生溢出,因为A和B的符号是负数,而答案是正数,但我的工作表答案键则相反


我的问题是,溢出是1还是答案键错了?

此计算中没有溢出

  • 1100
    -4
    十进制
  • 1000
    -8
    十进制
  • -4-(-8)=4
  • 因此,结果是
    0100
    ,没有任何溢出。(所有涉及的值都可表示为带符号的4位,涵盖范围为
    -8
    7
请注意,如果操作数具有相同的符号,减法永远不会溢出(既不会溢出,也不会下溢),这里就是这种情况


似乎您将加法末尾的额外位与确定是否发生溢出混淆了。一般来说,情况并非如此;对于每个操作,都有不同的规则来确定是否发生溢出/下溢。这里有一篇很好的文章要读,它详细介绍了位向量的有符号和无符号二进制算法发生下溢/溢出的确切条件:

这非常有用,谢谢!所以我相信知道所有有符号位的范围就足以检测到溢出?不太清楚你的意思;但一般来说,如果“数学上精确的结果”符合目标尺寸,则是;不会有过流/欠流。关键是计算数学上精确的结果“可能非常昂贵”(想象一下大位向量的乘法),因此已经开发了一些技术来确定是否存在溢出/下溢,而不进行精确运算。我链接的论文对这些结果进行了非常好的总结。