按位运算符执行按位 AND(&)、按位排他或(^)和按位非独占或(|)运算。
语法
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 位运算符:
操作员
DESCRIPTION
&
按位 AND 运算符将第一个作数的每一位与其第二个作数的对应位进行比较。 如果两个位均为 1,则对应的结果位将设置为 1。 否则,将对应的结果位设置为 0。
^
按位排他或运算符将第一个作数的每一位与其第二个作数的对应位进行比较。 如果一个位是 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 小数。
结束 Microsoft 专用
另请参阅
按位 AND 运算符: &
按位排他 OR 运算符: ^
按位非独占 OR 运算符: |