天天看點

巧用移位操作

移位規則:

移位時,移出的位數全部丢棄,移出的空位補入的數與左移還是右移有關。如果是左移,則規定補入的數全部是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;   這樣運算效率會大大提高,

下一篇: java移位操作

繼續閱讀