我找到的所有关于如何找到 1(翻转正二进制位)和 2(翻转正二进制位并加 1)补码的答案似乎都没有回答我的问题。
我的家庭作业要求找到负数的补码。因此,我不是从正数开始,而是需要找出它的负数是什么,而是给了我一个负数,并要求我找到它的补码。
一个愚蠢的想法是,我是否找到正值二进制值,然后翻转位得到我的负数,然后再次翻转它找到负数的 1 补码?
最佳答案
起始数是正数还是负数都没有关系 - 在二进制补码系统中,-x
与 ~x + 1
相同。如果你的原数是正数,结果就是负数,如果原数是负数,结果就是正数。 8 位示例 - 二进制表示 2 的补码二进制:
x (decimal) | -x (decimal) | x (binary) | -x (binary) | ~x (binary) | ~x+1 (binary)
------------+--------------+------------+-------------+-------------+---------------
5 | -5 | 0000 0101 | 1111 1011 | 1111 1010 | 1111 1011
-5 | 5 | 1111 1011 | 0000 0101 | 0000 0100 | 0000 0101
110 | -110 | 0110 1110 | 1001 0010 | 1001 0001 | 1001 0010
-38 | 38 | 1101 1010 | 0010 0110 | 0010 0101 | 0010 0110
注意 -x (binary)
列和 ~x+1 (binary)
列是相同的。
如果你需要得到一个数字的 1 的补码,那只是 ~x
。
关于math - 负数的 1 和 2 补码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34541316/