Javascript中的破浪號~,其實就是位操作符取反操作

JavaScript中的取反位運算符:~

js中的數字默認是有符號的。有符號的32位二進制的最高位也就是第一位數字代表着正負,1代表負數,0代表整數
爲什麼要用補碼?,計算機內部就是以補碼存儲。


(負數的補碼規則:符號位不變,其他位取反加1;正數的補碼規則:就是其本省)

~-1返回0:
原碼:1...0000...0001
補碼:1...1111...1110   +  1 = 1...1111...1111
取反:0...0000...0000
補充:爲0開頭無需處理爲補碼
十進制:0
~1返回-2:
原碼:0...0000...0001
補碼:0...0000...0001
取反:1...1111...1110
補充:爲1開頭,需要處理爲補碼:1...0000...0010
十進制:-2
~2返回-3
原碼:0...0000...0010
補碼:0...0000...0010
取反:1...1111...1101
補充:爲1開頭,需要處理爲補碼:1...0000...0011
十進制:-2
~3返回-4
原碼:0...0000...0011
補碼:0...0000...0011
取反:1...1111...1100
補充:爲1開頭,需要處理爲補碼:1...0000...0100
十進制:-4
~0返回-1
原碼:0...0000...0000
補碼:0...0000...0000
取反:1...1111...1111
補充:爲1開頭,需要處理爲補碼:1...0000...0001
十進制:-1
~9返回-10
原碼:0...0000...0101
補碼:0...0000...0101
取反:1...1111...1010
補充:爲1開頭,需要處理爲補碼:1...0000...0110
十進制:-10




規律:
取反操作可以用以下公式來表達,如n的取反後的值爲:

~n = n*(-1)-1 = -(n+1)



取反操作在javascript框架中的用途:

var index = -1;

if(~index){};//此時,if內部的返回值爲0,表示if不成立,經常用以判斷變量值是否等於-1的場景


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章