二进制对数

时间:2011-03-28 20:25:21

标签: algorithm math binary bits

我希望获得相反数量的二进制数(表示x - > - (x)和 - (x) - > x)。

算法是什么?我想改变所有位(“1”到“0”和“0”到“1”)并添加“1”。可以吗?

日Thnx

2 个答案:

答案 0 :(得分:4)

您的算法对于两个补码数是正确的:

-x = ~x + 1

对于一个补充,你可以使用:

-x = ~x

对于符号幅度数字:

-x = x ^ (1 << n)

其中n是单词中符号位的偏移量。我在这里使用C运算符表示法 - ^是按位异或运算符,<<是左移运算符。

对于另一个数字表示,您需要使用其他一些操作。

答案 1 :(得分:3)

这取决于负数的表示方式。你需要两个补码表示吗?你需要一个补码表示吗?

有关详细信息,请查看wikipedia