C++位操作的常見用法小結
更新時間:2014年09月05日 10:48:14 投稿:shichen2014
這篇文章主要介紹了C++位操作的常見用法,包括了判斷奇偶、交換兩個數、正負轉換、求絕對值等,需要的朋友可以參考下
本文以實例形式對C++位操作的常見用法進行了總結。分享給大家供大家參考之用。具體方法如下:
在C++中位操作有6種基本操作符,按照優(yōu)先級分別是:
取反 ~
移位 << >>
與 &
異或 ^
或 |
常用的用法有:
1 判斷偶數,判斷最低位是0還是1即可,比求模快
x % 2 != 0 //x正負都可以判斷;不用x%2 == 1,因為如果x為負奇數,x%2=-1 x & 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;正負都可計算,負數是按照補碼計算的,最后的符號位也被統(tǒng)計 } return cnt; }
4 正負轉換,不使用正負號。不管正數負數,取反后加1即可
int a = 1; a = ~a + 1; //a變成-1 a = ~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++程序設計的的學習有所幫助。
相關文章
Visual Studio 2022最新版安裝教程(圖文詳解)
本文主要介紹了Visual Studio 2022最新版安裝教程,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01最新VScode C/C++ 環(huán)境配置的詳細教程
這篇文章主要介紹了最新VScode C/C++ 環(huán)境配置的詳細教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11C/C++判斷傳入的UTC時間是否當天的實現(xiàn)方法
在項目中經常會顯示一個時間,如果這個時間在今日內就顯示為時分秒,否則顯示為年月日,有需要的朋友可以參考一下2014-01-01