C++位操作的常見用法小結(jié)
本文以實例形式對C++位操作的常見用法進行了總結(jié)。分享給大家供大家參考之用。具體方法如下:
在C++中位操作有6種基本操作符,按照優(yōu)先級分別是:
取反 ~
移位 << >>
與 &
異或 ^
或 |
常用的用法有:
1 判斷偶數(shù),判斷最低位是0還是1即可,比求???/p>
x % 2 != 0 //x正負都可以判斷;不用x%2 == 1,因為如果x為負奇數(shù),x%2=-1 x & 0x1 == 0
2 交換兩個數(shù),不用中間變量
void mySwap(int &a, int &b) { if(a == b) //相等時也能得到正確結(jié)果,但是沒必要了 return; a ^= b; b ^= a; a ^= b; }
3 求整數(shù)的二進制表示中1的個數(shù),不用一個一個的移位判斷
int numOfBit1(int a) { int cnt = 0; while(a != 0) { ++cnt; a &= a - 1; //將最右邊的1置為0;正負都可計算,負數(shù)是按照補碼計算的,最后的符號位也被統(tǒng)計 } return cnt; }
4 正負轉(zhuǎn)換,不使用正負號。不管正數(shù)負數(shù),取反后加1即可
int a = 1; a = ~a + 1; //a變成-1 a = ~a + 1; //a又變成1
5 求絕對值,不判斷正數(shù)負數(shù),不使用正負號,返回絕對值
int myAbs(int a) { int sign = a >> 31; //如果a為正數(shù),sign為0;否則sign為-1,即0xFFFFFFFF return (a^sign) - sign; //(a^0)-0 = a, (a^-1)-(-1) = ~a+1 = -a ,a^-1即為a取反 }
希望本文所述對大家C++程序設(shè)計的的學(xué)習(xí)有所幫助。
相關(guān)文章
Visual Studio 2022最新版安裝教程(圖文詳解)
本文主要介紹了Visual Studio 2022最新版安裝教程,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01最新VScode C/C++ 環(huán)境配置的詳細教程
這篇文章主要介紹了最新VScode C/C++ 環(huán)境配置的詳細教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11C++使struct對象擁有可變大小的數(shù)組(詳解)
下面小編就為大家?guī)硪黄狢++使struct對象擁有可變大小的數(shù)組(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12C/C++判斷傳入的UTC時間是否當(dāng)天的實現(xiàn)方法
在項目中經(jīng)常會顯示一個時間,如果這個時間在今日內(nèi)就顯示為時分秒,否則顯示為年月日,有需要的朋友可以參考一下2014-01-01