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 语言编程中位运算符背后的真值表
| x | y | x & y | X | y | x ^ y |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
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;
}

与运算 = a & b
0001001 & 1000001 = 0000001 = 1
或运算 = a || b
0001001 || 1000001 = 1001001 = 73
接下来,异或运算 = a ^ b
0001001 ^ 1000001 = 1001000 = 72
左移运算 = b >> 1
1000001 >> 1 = 0100000 = 32