【发布时间】:2011-06-25 20:25:43
【问题描述】:
我正在尝试使用二进制补码将两个值相减。我有溢出位的问题。由于我的容器包含一个无限位大小的整数,我不知道结果的最高位是真的来自结果还是只是溢出。如果不使用-,我将如何摆脱溢出(我不能只做1 << bits - 1,因为这将涉及使用容器,而容器还没有工作operator-)
0b1111011111 - 0b111010000 -> 0b1111011111 + 0b000110000 -> 1000001111
vs(通常)
0b00000101 - 0b000000001 -> 0b00000101 + 0b11111111 -> 0b100000100 -> 0b00000100
【问题讨论】:
-
你有印刷错误吗?我认为您的
1000001111应该是10000001111。打印错误的1000001111恰好是问题的正确答案,以错误的方式到达;也许这增加了你的困惑。
标签: c++ math subtraction twos-complement