我希望获得相反数量的二进制数(表示x - > - (x)和 - (x) - > x)。
算法是什么?我想改变所有位(“1”到“0”和“0”到“1”)并添加“1”。可以吗?
日Thnx
答案 0 :(得分:4)
您的算法对于两个补码数是正确的:
-x = ~x + 1
对于一个补充,你可以使用:
-x = ~x
对于符号幅度数字:
-x = x ^ (1 << n)
其中n
是单词中符号位的偏移量。我在这里使用C运算符表示法 - ^
是按位异或运算符,<<
是左移运算符。
对于另一个数字表示,您需要使用其他一些操作。
答案 1 :(得分:3)
这取决于负数的表示方式。你需要两个补码表示吗?你需要一个补码表示吗?
有关详细信息,请查看wikipedia