C 位元運算子
位元運算子只會執行位元集和 (與)、 位元互斥 OR (^),和位元 (含)-OR (|) 作業。
語法
AND 運算式:
相等運算式AND 運算式和 相等運算式
獨佔式 OR 運算式:
AND 運算式獨佔式 OR 運算式**^** AND 運算式
包容式 OR 運算式:
獨佔式 OR 運算式包容式 OR 運算式 | 獨佔式 OR 運算式
位元運算子的運算元必須有整數類資料型別,但它們的型別可能會不同。 此類運算子執行一般的算數轉換 ; 結果的型別是在轉換後的運算元型別。
C 的位元運算子如下所示:
運算子 |
描述 |
---|---|
& |
位元-和運算子可以比較的第二個運算元的對應的位元的第一個運算元的每個位元。 如果兩個位元都是 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 專有的
位元帶正負號的整數運算的結果是由實作環境根據以 ANSI C 標準。 Microsoft c 編譯器,在帶正負號整數的位元運算工作上不帶正負號整數的位元運算一樣。 例如, -16 & 99可以用來表示二進位檔當做
11111111 11110000
& 00000000 01100011
_________________
00000000 01100000
位元 AND 運算的結果為十進位的 96。
結束 Microsoft 特定