欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

相關文章

  • 基于C++中sprintf的錯誤總結詳解

    基于C++中sprintf的錯誤總結詳解

    本篇文章是對C++中sprintf的錯誤進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C++超詳細講解泛型

    C++超詳細講解泛型

    泛型編程,故如其名,是一個泛化的編程方式。其實現(xiàn)原理為程序員編寫一個函數/類的代碼示例,讓編譯器去填補出不同的函數實現(xiàn)
    2022-07-07
  • Visual Studio 2022最新版安裝教程(圖文詳解)

    Visual Studio 2022最新版安裝教程(圖文詳解)

    本文主要介紹了Visual Studio 2022最新版安裝教程,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C++中mutable與volatile的深入理解

    C++中mutable與volatile的深入理解

    這篇文章主要給的阿加介紹了關于C++中mutable與volatile的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-11-11
  • 最新VScode C/C++ 環(huán)境配置的詳細教程

    最新VScode C/C++ 環(huán)境配置的詳細教程

    這篇文章主要介紹了最新VScode C/C++ 環(huán)境配置的詳細教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • C++使struct對象擁有可變大小的數組(詳解)

    C++使struct對象擁有可變大小的數組(詳解)

    下面小編就為大家?guī)硪黄狢++使struct對象擁有可變大小的數組(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • 深入了解C++中常用的三個智能指針

    深入了解C++中常用的三個智能指針

    C++是一門強大的編程語言,但是在內存管理方面卻存在著一些問題。手動管理內存不僅費時費力,而且容易出錯。因此,C++中引入了智能指針這一概念,以更好地管理內存,下面就來詳細講講C++中常用的三個智能指針吧
    2023-05-05
  • 簡單總結C++中指針常量與常量指針的區(qū)別

    簡單總結C++中指針常量與常量指針的區(qū)別

    這里我們來簡單總結C++中指針常量與常量指針的區(qū)別,包括如何聲明和使用常量指針以及指針常量,需要的朋友可以參考下
    2016-06-06
  • C語言實現(xiàn)軍旗游戲的示例代碼

    C語言實現(xiàn)軍旗游戲的示例代碼

    這篇文章主要為大家詳細介紹了如何利用C語言實現(xiàn)軍旗游戲,文中的示例代碼講解詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-11-11
  • C/C++判斷傳入的UTC時間是否當天的實現(xiàn)方法

    C/C++判斷傳入的UTC時間是否當天的實現(xiàn)方法

    在項目中經常會顯示一個時間,如果這個時間在今日內就顯示為時分秒,否則顯示為年月日,有需要的朋友可以參考一下
    2014-01-01

最新評論