C 语言中的位运算符

C 语言中的位运算符是用于执行位操作的一些运算符。所有的十进制值都将转换为二进制值(即位的序列,例如 0100、1100、1000、1001 等)。然后,位运算符将对这些位进行操作,例如将它们从左向右移动,或将位值从 0 转换为 1。

下表展示了 C 语言编程中不同的位运算符及其示例和含义。例如,假设 x = 6,y = 8,它们的二进制形式为:x = 0110 和 y = 1000

位运算符含义示例
&按位与X & Y = 0000
|按位或X | Y = 1110
^按位异或X ^ Y = 1110
~补码~X = 00001001 (非运算符会将所有 0 转换为 1。)
<<左移X << 1 = 00001100 (位将向左移动 1 步。如果我们使用 2 或 3,它们将相应地移动)
>>右移Y >> 1 = 00000100

让我们看一下 C 语言编程中位运算符背后的真值表

xyx & yX | yx ^ y
00000
01011
10011
11110

C 语言编程中的位运算符示例

让我们看一个例子来更好地理解位运算符。在这个程序中,我们使用两个变量 a 和 b,它们的值分别为 9 和 65。接下来,我们将使用这两个变量向您展示各种操作。

在这个位运算符程序中,我们声明了 2 个整数 a 和 b,并赋值为 9 和 65。9 的二进制形式是 0001001,65 的二进制形式是 1000001。下面的 printf 语句将对 a 和 b 执行位运算,然后显示程序输出

#include <stdio.h>

int main()
{
 int a = 9, b = 65;

 printf(" AND a&b = %d \n", a & b);
 printf(" OR a|b = %d \n", a | b);
 printf(" EXCLUSIVE OR a^b = %d \n", a ^ b);
 printf(" NOT ~a = %d \n", a = ~a);

 printf(" LEFT SHIFT a<<1 = %d \n", a << 1);
 printf(" RIGHT SHIFT b>>1 = %d \n", b >> 1);

 return 0;
}
 Bitwise operators Example

让我们看看这个编程中这些运算符背后的计算过程。

与运算 = a & b
0001001 & 1000001 = 0000001 = 1

或运算 = a || b
0001001 || 1000001 = 1001001 = 73

接下来,异或运算 = a ^ b
0001001 ^ 1000001 = 1001000 = 72

左移运算 = b >> 1
1000001 >> 1 = 0100000 = 32