在google chrome下進行測試。
js中位移運算有3種:左移(<<)、無符號右移(>>>)、有符號右移(>>)(都是對補碼進行移動)
左移:是無符號的左移運算。左移32位變成原來的值
原值:-5
補碼:11111111111111111111111111111011
左移29位,變成:
值:1610612736
補碼:01100000000000000000000000000000
左移32位,又變成原值-5:
原值:1
補碼:00000000000000000000000000000001
左移31位,變成:
值:-2147483648
補碼:10000000000000000000000000000000
左移32位,又變成原值1
無符號右移(>>>):左邊補0,運算結果為一無符號32位整數。右移32位變為原來的值
-1
右移一位,變成:2147483647
補碼:01111111111111111111111111111111
右移32為,變為:4294967295,即為-1的補碼。
補碼:11111111111111111111111111111111
有符號右移(>>):左邊補符號位。移動32位,變為原來的值
-1
右移1位還是-1
1
右移一位變為0