天天看點

【Programming Clip】位運算的應用

1.用途

利用位運算,完成判斷兩個數字直接二進制的差異,數值交換,判斷是否為2的次方,以及判斷機器是SMALL_ENDIAN還是BIG_ENDIAN等。

2.描述語言

C++

3.原理

這個也沒有什麼原理,就是位運算,包括位移、與、或、異、取反或等。

4.代碼

5.收獲

1)在處理數值需要提高效率時可以從二進制的規律考慮,進行程式優化。

2)g++下,左移的規則是:向左移動,不管是否為符号位,丢棄最高位,低位補齊。左移一位相當于乘以2,由于int在C中是有符号的,最高位是符号位,0為正,1為負,是以左移可能産生溢出,即超過最大能表示的範圍而變為了負值。

3)g++下,右移的規則是:向右移動,符号位正數補0負數補1(其實就是符号位不變),不存在溢出。

4)當位移的位數超過該數值類型的最大位數時,編譯器會用位移位數去模類型的最大位數,然後按餘數進行移位。

6.代碼下載下傳

<a href="http://gnuhpc.googlecode.com/svn/trunk/CPPExClip/bitopeartion.cpp">http://gnuhpc.googlecode.com/svn/trunk/CPPExClip/bitopeartion.cpp</a>

繼續閱讀