移位規則:
移位時,移出的位數全部丢棄,移出的空位補入的數與左移還是右移有關。如果是左移,則規定補入的數全部是0;如果是右移,還與被移位的資料是否帶符号有關。若是不帶符号數,則補入的數全部為0;若是帶符号數,則補入的數全部等于原數的最左端位上的原數(即原符号位)。具體移位規則如下所示。
位移位運算符的優先級如下:
·算術運算符 優先于 位移位運算符 優先于 關系運算符
·位移位運算符是同級别的,結合性是自左向右
typedef int uint;
下面以uint類型來說明,以下隻适用于uint類型
例如,uint i = 3(對應二進制數為00000011)左移 i <<1
則:i <<1 結果為6 (對應二進制數為00000110)
i=3; i <<2 結果為12 (對應二進制數為00001100)
uint j= 3 對應二進制數為00000011)右移 j >>1
則:j>>1結果為1(對應二進制數為00000001)
j = 6; j>>2結果為1(對應二進制數為00000001)
可以得出左移 i<< n位 ,結果為 i*2n
右移 j>>n位 , 結果為 j/2n; (最後結果,資料會截斷成uint)
運用:
9 * 26
9<<6; 這樣運算效率會大大提高,