在Javascript中,當我做這個的JavaScript位運算符的問題
var num = 1;
~ num == -2
爲什麼〜NUM不等於0
二進制1存儲爲1 ...因此沒有1應被0
或它存儲象0001因此不是0001。將1110
我想我失去了一些東西......有人可以清除這件事
在Javascript中,當我做這個的JavaScript位運算符的問題
var num = 1;
~ num == -2
爲什麼〜NUM不等於0
二進制1存儲爲1 ...因此沒有1應被0
或它存儲象0001因此不是0001。將1110
我想我失去了一些東西......有人可以清除這件事
查找Two's complement有符號二進制數
讓我們假設JavaScript數字是8個位寬(其中它不是):
然後
1 = 0000 0001b
和
~1 = 1111 1110b
哪個的-2
0000 0010b = 2
0000 0001b = 1
0000 0000b = 0
1111 1111b = -1
1111 1110b = -2
~
二進制表示切換的操作數的比特,從而
00000001
變得
11111110
這是-2
注意:在javascript中,數字是32位的,但我縮短它來說明這一點。
按位注意到任何數x的產量 - (X + 1)。例如,〜5產生-6。
原因是使用按位NOT可以反轉所有位的值。如果將值1存儲在帶符號的8位整數中,則存儲二進制值00000001.如果應用NOT NOT位,則會得到11111110,對於帶符號的8位整數,該值爲二進制值 - 2。
你忘記了其他位。 –