位元運算

不同於上述的基本五則運算子,這裡會介紹與2進位相關的運算子。

位元運算子

在電腦中,數字都是以0/1二進位的方式編碼,像是生活中的5、87等數字,在電腦裡面則表示成以下樣貌(以7 bits為範例):

5  -> 0000101
87 -> 1010111

以下為在C++裡面的位元運算子:

運算子

意思

範例

|

OR

A | B

&

AND

A & B

^

XOR

A ^ B

<<

向左位移

A << B

>>

向右位移

A >> B

|

&

^

<<

>>

A

0101

0101

0101

0101

0101

B

1100

1100

1100

0001

0001

結果

1101

0100

1001

1010

0010

範例Code

#include <iostream>
using namespace std;

int main(){
    /*
    C++ 語言中宣告各個進位方式:
        二進位:0b+數字
        八進位:0+數字
        十進位:數字
        十六進位:0x+數字
    */
    int a = 0b000101;//5
    int b = 0b001100;//12

    cout << "a | b = " << (a | b) << endl;
    cout << "a & b = " << (a & b) << endl;
    cout << "a ^ b = " << (a ^ b) << endl;
    cout << "a << 2 = " << (a << 2) << endl;
    cout << "b >> 2 = " << (b >> 2) << endl;

    return 0;
}

範例輸出:

a | b = 13

a & b = 4

a ^ b = 9

a << 2 = 20

b >> 2 = 3

由於運算子優先處理順序的問題,我們會習慣在位元運算子兩邊加上括號:

cout << (a << 2) << endl;

如果不這樣做,如:

cout << a << 2 << endl;

就會變成存粹輸出變數a和2。

Last updated