国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++位操作的常見用法小結

2020-01-26 15:20:58
字體:
來源:轉載
供稿:網友

本文以實例形式對C++位操作的常見用法進行了總結。分享給大家供大家參考之用。具體方法如下:

在C++中位操作有6種基本操作符,按照優先級分別是:

取反   ~
移位   <<  >>
與      &
異或   ^
或      |

常用的用法有:

1 判斷偶數,判斷最低位是0還是1即可,比求模快

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++程序設計的的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁津县| 卓尼县| 万年县| 伊宁县| 寻乌县| 沾化县| 方正县| 冀州市| 含山县| 宝丰县| 安溪县| 洛扎县| 鸡东县| 松滋市| 兖州市| 庆城县| 百色市| 泸定县| 赞皇县| 西乡县| 偏关县| 霍城县| 翁牛特旗| 新乡市| 淮安市| 平邑县| 六安市| 上杭县| 陇川县| 安乡县| 武宣县| 洪洞县| 浠水县| 黑河市| 温州市| 双江| 万全县| 沙雅县| 嘉鱼县| 吉木萨尔县| 阳山县|