-~x 和 ~-x 是如何工作的?

How do -~x and ~-x work?

我阅读了 (here) 并(用计算机)验证了 -~x 等于 x+1 并且 ~-x 等于 x-1 所以我试着把它写下来看看发生了什么,但我做错了什么。

让我们x=4

0100 // 4 in binary, leading 0 for the sign
1100 // the inverse of the addition
0011 // ~ complement

0011=3 根据规则 ~-x === x-1

但是对于 -~x 我得到了相同的结果:

0100 // 4 in binary
1011 // ~ complement
0011 // the inverse

我哪里出错了?我是不是傻了?

好的,问题出在我对负数的表示上。我必须使用 Two's complement 操作然后它 returns 正确的结果。所以 -~x 会像这样:

0100 // 4 (we assume a 4 bit number without taking sign into account)
1011 // complement which is 11

现在使用补码:

The two's complement of an N-bit number is defined as the complement with respect to 2N; in other words, it is the result of subtracting the number from 2N.

在本例中 N=42^N = 16,最后当我们从 16 中减去 11 时,我们得到 5,即 x+1。我们表明 -~x === x+1