1) 左移運算(<<)
左移就是把所有位向左移動幾位
如: 12 << 2 意思就是12向左移動兩位
12的二進制是: 0000 1100
通過這個圖我們可以看出來,所有的位全都向左移動兩位,然后把右邊空的兩個位用0補上,最左邊多出的兩個位去掉,最后得到的結果就是00110000 結果就是48
我們用同樣的辦法算 12<<3 結果是 96
8<<4 結果是 128
由此我們得出一個快速的算法 M << n 其實可以這么算 M << n = M * 2n
2) 右移運算符(>>)
這個跟左移運算大體是一樣的
例: 12 >> 2
我們可以看出來右移和左移其實是一樣的,但是還是有點不同的,不同點在於對於正數和負數補位的時候補的不一樣,負數補1,正數補0
如我們再做一個 –8 的 -8>>2
這里總結一下,關於負數或者正數來說,移位的時候是一樣的,但是在補位的時候,如果最高位是0就補0,如果最高位是1就補1
由此我們得出一個快速的算法 M >> n 其實可以這么算 M >> n = M / 2^n