为什么 ~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 -> ~3
是100
也就是-4.
其中 -3 是 101
,减去 1 得到 100
,即 4。
所以取负值的时候也需要减1,因为范围是-2^(B) - 2^(B) - 1
,需要补偿
我不明白为什么 ~x = -x-1 是真的。在否定数字时取反对我来说似乎违反直觉。 -x 不应该只是 x,-/+ 位为 1 吗? 或者这 ~x = -x-1 只是一个硬性规则...
~
运算符翻转所有位。而 -x
取某个值的负值,这是不同的。这是因为 bit-wise 运算符会反转字中的每一位。不是算术运算,是逻辑运算。
让我们考虑以下示例,该示例将强调长度为 3 的单词的这个问题:
您可以表示的值的范围是从 -4 到 3。 如果您不熟悉它,请阅读 2's complementnt
011
表示值3 -> ~3
是100
也就是-4.
其中 -3 是 101
,减去 1 得到 100
,即 4。
所以取负值的时候也需要减1,因为范围是-2^(B) - 2^(B) - 1
,需要补偿