對左移和右移的理解

左移運算符<< 

雙目運算符;

功能:把左移運算符(<<)左邊的運算數的各二進制位全部左移若干位,移動的位數由左移運算符右邊的數指定,高位舍掉,低位補0

右移運算符>>

雙目運算符;

功能:右移運算符(>>)左邊的運算數的各二進制位全部右移若干位,移動的位數由右移運算符右邊的數指定;

           對於有符號數,在右移時,符號位將隨同移動:

                    當有符號數爲正數時,最高位補0

                    當有符號數爲正數時,最高位也就是符號位爲1,最高位補0或者補1,取決於編譯系統。(很多系統規定爲補1)

 例題1:

0x01<<2+3;

計算結果:32

原因:'+'運算符的優先級高於<<

例題2:

0x01<<32;             //溢出 

0x01<<-1;               

這兩句話都會使編譯器報錯,

左右移的位數不能大於被移位的數據的長度,也不能小於0

發佈了34 篇原創文章 · 獲贊 19 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章