-~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=4
和 2^N = 16
,最后当我们从 16 中减去 11 时,我们得到 5,即 x+1
。我们表明 -~x === x+1
我阅读了 (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=4
和 2^N = 16
,最后当我们从 16 中减去 11 时,我们得到 5,即 x+1
。我们表明 -~x === x+1