c++按位操作符

來源:互聯網
上載者:User

位元運算是指按二進位進行的運算。在程式中,常常需要處理二進位位的問題。C/C++語言提供了6個位操作運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long類型。

    在實際應用中,建議用unsigned整型運算元,因為帶符號運算元可能因為不同機器結果不同。

    c++和c的位操作運算子完全相同,但c++中增加了bitset標準庫來支援位集操作,具體內容請參考http://book.51cto.com/art/200809/88698.htm或者http://book.csdn.net/bookfiles/17/1001760.shtml,這些連結都是《C++ Primer中文版》中的內容,大家也可以直接看書。

    下面是C/C++位操作運算子列表,其中運算子優先順序為從上到下遞減,但<<,>>優先順序相同。

C/C++位操作運算子
操作符 功能 用法
~ 位求反 ~expr
<< 左移 expr1 << expr2
>> 右移 expr1 >> expr2
& 位與 expr1 & expr2
^ 位異或 expr1 ^ expr2
| 位或 expr1 | expr2

 

    程式碼範例如下:

  代碼

 1 #include<iostream>
2  using namespace std;
3  int main(){
4 unsigned short x=3,y=5;
5 cout<<"~x="<<(unsigned short)~x<<endl;//位求反
6   cout<<"~x="<<~x<<endl;//位求反
7   cout<<"x&y="<<(x&y)<<endl;//位與
8   cout<<"x^y="<<(x^y)<<endl;//位異或
9   cout<<"x|y="<<(x|y)<<endl;//位或
10   cout<<"x<<1="<<(x<<1)<<endl;//位左移
11   cout<<"y>>1="<<(y>>1)<<endl;//位右移
12   return 0;
13 }

    運算結果如下:

~x=65532

~x=-4

x&y=1

x^y=6

x|y=7

x<<1=6

y>>1=2

    代碼解釋如下:
    short為16位整數,故x,y的二進位表示如下:
    x=3(00000000 00000011)
    y=5(00000000 00000101)

      ~ 00000000 00000011
      = 11111111 11111100(65532或者-4)(至於為什麼同樣的二進位位表示的數不一樣,這與電腦的數值表示有關,具體原因可搜尋“補碼”)

         00000000 00000011
      & 00000000 00000101
      = 00000000 00000001(1)

         00000000 00000011
      ^ 00000000 00000101
      = 00000000 00000110(6)

         00000000 00000011
      |  00000000 00000101
      = 00000000 00000111(7)

         00000000 00000011<<1
      = 00000000 00000110(6)

         00000000 00000101>>1
      = 00000000 00000010(2)

&=   ^=   |=  這三個運算子就是跟+=差不多, A &= B 就是A先和B與,然後再賦給A。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.