我想得到相反数量的二进制数(表示 x--> -(x) 和 -(x) --> x)。
算法会是什么?我想改变所有位(“1”到“0”和“0”到“1”)并添加“1”。可以吗?
谢谢
您的算法对于二进制补码是正确的:
-x = ~x + 1
对于一个人的补充,你会使用:
-x = ~x
对于符号大小数字:
-x = x ^ (1 << n)
n
字中符号位的偏移量在哪里。我在这里使用 C 运算符表示法 -^
是按位异或运算符,并且<<
是左移。
对于另一种数字表示,您需要使用其他一些操作。
这取决于负数的表示方式。你需要二进制补码表示吗?你需要一个补码表示吗?
有关更多详细信息,请查看维基百科