C 按位运算符
按位运算符执行按位“与”(&
)、按位“异或”(^
) 和按位“与或”(|
) 运算。
语法
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 按位运算符如下所述:
运算符 | 描述 |
---|---|
& |
按位“与”运算符将其第一操作数的每个位与其第二操作数的相应位进行比较。 如果两个位均为 1,则对应的结果位将设置为 1。 否则,将对应的结果位设置为 0。 |
^ |
按位“异或”运算符将其第一操作数的每个位与其第二操作数的相应位进行比较。 如果一个位是 0,另一个位是 1,则相应的结果位将设置为 1。 否则,将对应的结果位设置为 0。 |
| |
按位“与或”运算符将其第一操作数的每个位与第二操作数的相应位进行比较。 如果其中一个位是 1,则将对应的结果位设置为 1。 否则,将对应的结果位设置为 0。 |
示例
这些声明用于以下三个示例:
short i = 0xAB00;
short j = 0xABCD;
short n;
n = i & j;
第一个示例中的分配给 n
的结果与 i
相同(0xAB00 十六进制)。
n = i | j;
n = i ^ j;
第二个示例中的按位“与或”生成值 0xABCD(十六进制),而第三个示例中的按位“异或”生成 0xCD(十六进制)。
Microsoft 专用
对带符号整数进行位运算的结果是根据 C 标准实现定义的。 对于 Microsoft C 编译器,对有符号整数进行的按位运算与对无符号整数进行的按位运算的工作原理相同。 例如,-16 & 99
可用二进制格式表示
11111111 11110000
& 00000000 01100011
_________________
00000000 01100000
按位 AND 的结果为 96(十进制)。
结束 Microsoft 专用
请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈