位运算符执行按位与 (&),按位异或 (^),按位或 (|)操作。
语法
“与”表达式:
相等表达式“与”表达式 **&**相等表达式
独占的“或”表达式:
“与”表达式独占的“或”表达式**^** “与”表达式
独占的”或“表达式:
独占的“或”表达式独占的”或“表达式 | 独占的“或”表达式
按位操作的操作符必须是整型的,但是,他们的类型可以不同。 这些运算符执行常见算术转换;该结果的类型是转换后操作数的类型。
C 位运算符如下所述:
运算符 |
描述 |
---|---|
& |
位 AND 运算符 (&) 将第一操作数的每一位与第二操作数的相应位相比较。 如果任何一个位是 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 专用
在带符号整数的操作的结果根据 ANSI C 标准实现按位定义。 对于基于 C 编译器,带符号整数的操作按位按位工作方式和在无符号整数的操作相同。 例如, -16 & 99 也可表示在十进制中表示为
11111111 11110000
& 00000000 01100011
_________________
00000000 01100000
按位 AND 的结果为十进制的96。
结束 Microsoft 专用