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>