Share via


C 位元運算子

位運算子會執行位 AND () & 、位獨佔 OR () ^ ,以及位包容性 OR () | 作業。

語法

AND-expression:
equality-expression
AND-expression & equality-expression

exclusive-OR-expression:
AND-expression
exclusive-OR-expression ^ AND-expression

inclusive-OR-expression:
exclusive-OR-expressioninclusive-OR-expression | exclusive-OR-expression

位元運算子的運算元必須是整數類型,但其類型可以不同。 這些運算子會執行一般算術轉換;結果類型是運算元在轉換之後的類型。

C 位元運算子描述如下:

運算子 描述
& 位元 AND 運算子會比較其第一個運算元的每個位元,以及其第二個運算元的對應位元。 如果這兩個位元都是 1,則對應的結果位元會設為 1。 否則,對應的結果位元會設為 0。
^ 位元互斥 OR 運算子會比較其第一個運算元的每個位元,以及其第二個運算元的對應位元。 如果一個位元為 0 而另一個位元為 1,則對應的結果位元會設為 1。 否則,對應的結果位元會設為 0。
| 位元包含 OR 運算子會比較其第一個運算元的每個位元,以及其第二個運算元的對應位元。 如果其中一個位元是 1,則對應的結果位元會設為 1。 否則,對應的結果位元會設為 0。

範例

下列三個範例使用這些宣告:

short i = 0xAB00;
short j = 0xABCD;
short n;

n = i & j;

指派給第一個範例中 n 的結果與 i (0xAB00 十六進位) 相同。

n = i | j;

n = i ^ j;

第二個範例中的位元包含 OR 會產生值 0xABCD (十六進位),而第三個範例中的位元互斥 OR 產生 0xCD (十六進位)。

Microsoft 特定的

帶正負號整數的位運算結果是根據 C 標準來定義實作。 針對 Microsoft C 編譯器,帶正負號整數的位元運算運作方式,與不帶正負號整數的位元運算相同。 例如,-16 & 99 可以用二進位運算式表示為

  11111111 11110000
& 00000000 01100011
  _________________
  00000000 01100000

位元 AND 的結果是 96 (十進位)。

END Microsoft Specific

另請參閱

位 AND 運算子: &
位獨佔 OR 運算子: ^
位包含 OR 運算子: |