为什么 ~x = -x -1

Why is ~x = -x -1

我不明白为什么 ~x = -x-1 是真的。在否定数字时取反对我来说似乎违反直觉。 -x 不应该只是 x,-/+ 位为 1 吗? 或者这 ~x = -x-1 只是一个硬性规则...

~ 运算符翻转所有位。而 -x 取某个值的负值,这是不同的。这是因为 bit-wise 运算符会反转字中的每一位。不是算术运算,是逻辑运算。

让我们考虑以下示例,该示例将强调长度为 3 的单词的这个问题:

您可以表示的值的范围是从 -4 到 3。 如果您不熟悉它,请阅读 2's complementnt

011表示值3 -> ~3100也就是-4.

其中 -3 是 101,减去 1 得到 100,即 4。

所以取负值的时候也需要减1,因为范围是-2^(B) - 2^(B) - 1,需要补偿