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-expression
inclusive-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
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應