位运算符执行按位与 (),按位独占的或 (^),并包含按位或 (**|**操作)。
语法
和表达式:
相等表达式和 expression相等表达式
独占的或表达式:
和 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 专用
在带符号整数的操作的结果因 ANSI C 标准实现按位定义。对 Microsoft C 编译器,在带符号整数的操作按位按位工作方式在无符号整数的操作相同。例如, -16 & 99 可以用二进制表示形式
11111111 11110000
& 00000000 01100011
_________________
00000000 01100000
结果的位和是 96)。
特定于 Microsoft 的结尾