左移運算符<<
雙目運算符;
功能:把左移運算符(<<)左邊的運算數的各二進制位全部左移若干位,移動的位數由左移運算符右邊的數指定,高位舍掉,低位補0
右移運算符>>
雙目運算符;
功能:把右移運算符(>>)左邊的運算數的各二進制位全部右移若干位,移動的位數由右移運算符右邊的數指定;
對於有符號數,在右移時,符號位將隨同移動:
當有符號數爲正數時,最高位補0
當有符號數爲正數時,最高位也就是符號位爲1,最高位補0或者補1,取決於編譯系統。(很多系統規定爲補1)
例題1:
0x01<<2+3;
計算結果:32
原因:'+'運算符的優先級高於<<
例題2:
0x01<<32; //溢出
0x01<<-1;
這兩句話都會使編譯器報錯,
左右移的位數不能大於被移位的數據的長度,也不能小於0