javascript按位运算符问题

sam*_*one 2 javascript bit-manipulation

在Javascript中,当我这样做

var num = 1;

~ num == -2
Run Code Online (Sandbox Code Playgroud)

为什么~num不等于0

在二进制1中存储为1 ...因此不应该为1

或者它像0001一样存储,因此不是0001将是1110

我想我错过了一些东西......有人可以清楚这一点

J. *_*mes 5

查找已签名二进制数的二进制

让我们假设一个javascript数字是8位宽(它不是):

然后

1 = 0000 0001b
Run Code Online (Sandbox Code Playgroud)

~1 = 1111 1110b
Run Code Online (Sandbox Code Playgroud)

哪个是二进制表示 -2

0000 0010b =  2
0000 0001b =  1
0000 0000b =  0
1111 1111b = -1
1111 1110b = -2
Run Code Online (Sandbox Code Playgroud)