C 按位运算符

位运算符执行按位与 (&),按位异或 (^),按位或 (|)操作。

语法

  • “与”表达式
    相等表达式

    “与”表达式 **&**相等表达式

  • 独占的“或”表达式:
    “与”表达式

    独占的“或”表达式**^** “与”表达式

  • 独占的”或“表达式
    独占的“或”表达式

    独占的”或“表达式 | 独占的“或”表达式

按位操作的操作符必须是整型的,但是,他们的类型可以不同。 这些运算符执行常见算术转换;该结果的类型是转换后操作数的类型。

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 专用

请参见

参考

按位与运算符:&

按位异或运算符:^

按位与或运算符:|