本文以實例形式對C++位操作的常見用法進行了總結。分享給大家供大家參考之用。具體方法如下:
在C++中位操作有6種基本操作符,按照優先級分別是:
取反 ~
移位 << >>
與 &
異或 ^
或 |
常用的用法有:
1 判斷偶數,判斷最低位是0還是1即可,比求???/p>
x % 2 != 0 //x正負都可以判斷;不用x%2 == 1,因為如果x為負奇數,x%2=-1x & 0x1 == 0
2 交換兩個數,不用中間變量
void mySwap(int &a, int &b){ if(a == b) //相等時也能得到正確結果,但是沒必要了 return; a ^= b; b ^= a; a ^= b;}
3 求整數的二進制表示中1的個數,不用一個一個的移位判斷
int numOfBit1(int a){ int cnt = 0; while(a != 0) { ++cnt; a &= a - 1; //將最右邊的1置為0;正負都可計算,負數是按照補碼計算的,最后的符號位也被統計 } return cnt;}
4 正負轉換,不使用正負號。不管正數負數,取反后加1即可
int a = 1;a = ~a + 1; //a變成-1a = ~a + 1; //a又變成1
5 求絕對值,不判斷正數負數,不使用正負號,返回絕對值
int myAbs(int a){ int sign = a >> 31; //如果a為正數,sign為0;否則sign為-1,即0xFFFFFFFF return (a^sign) - sign; //(a^0)-0 = a, (a^-1)-(-1) = ~a+1 = -a ,a^-1即為a取反}
希望本文所述對大家C++程序設計的的學習有所幫助。
新聞熱點
疑難解答
圖片精選