📜  C C++中的按位运算符(1)

📅  最后修改于: 2023-12-03 14:39:37.715000             🧑  作者: Mango

C/C++中的按位运算符

简介

按位运算符是用来在二进制数的位级别上进行操作的运算符。在C/C++中,提供了多种按位运算符,包括位与(&)、位或(|)、位异或(^)、位取反(~)、左移(<<)和右移(>>)。

按位与(&)

按位与运算符将两个操作数的对应位进行逻辑与操作,结果的每一位都是两个操作数对应位的逻辑与结果。按位与运算符用符号&表示。

示例

以下是一个按位与运算的示例。

#include <stdio.h>

int main() {
   int a = 5;    // 二进制表示为 0101
   int b = 3;    // 二进制表示为 0011
   int result = a & b;    // 结果为 0001(二进制表示为 1)

   printf("result: %d\n", result);
   return 0;
}
按位或(|)

按位或运算符将两个操作数的对应位进行逻辑或操作,结果的每一位都是两个操作数对应位的逻辑或结果。按位或运算符用符号|表示。

示例

以下是一个按位或运算的示例。

#include <stdio.h>

int main() {
   int a = 5;    // 二进制表示为 0101
   int b = 3;    // 二进制表示为 0011
   int result = a | b;    // 结果为 0111(二进制表示为 7)

   printf("result: %d\n", result);
   return 0;
}
按位异或(^)

按位异或运算符将两个操作数的对应位进行逻辑异或操作,结果的每一位都是两个操作数对应位的逻辑异或结果。按位异或运算符用符号^表示。

示例

以下是一个按位异或运算的示例。

#include <stdio.h>

int main() {
   int a = 5;    // 二进制表示为 0101
   int b = 3;    // 二进制表示为 0011
   int result = a ^ b;    // 结果为 0110(二进制表示为 6)

   printf("result: %d\n", result);
   return 0;
}
按位取反(~)

按位取反运算符是一元运算符,用于对操作数的每一位进行逻辑取反操作,结果是操作数的每一位的取反结果。按位取反运算符用符号~表示。

示例

以下是一个按位取反运算的示例。

#include <stdio.h>

int main() {
   int a = 5;    // 二进制表示为 0101
   int result = ~a;    // 结果为 1010(二进制表示为 -6)

   printf("result: %d\n", result);
   return 0;
}
左移(<<)

左移运算符将操作数的所有位向左移动指定的位数,右边空出的位用零填充。左移运算符用符号<<表示。

示例

以下是一个左移运算的示例。

#include <stdio.h>

int main() {
   int a = 5;    // 二进制表示为 0101
   int result = a << 2;    // 结果为 10100(二进制表示为 20)

   printf("result: %d\n", result);
   return 0;
}
右移(>>)

右移运算符将操作数的所有位向右移动指定的位数,左边空出的位用符号位填充(符号位为0时填充0,符号位为1时填充1)。右移运算符用符号>>表示。

示例

以下是一个右移运算的示例。

#include <stdio.h>

int main() {
   int a = -10;    // 二进制表示为 11111111111111111111111111110110
   int result = a >> 2;    // 结果为 11111111111111111111111111111101(二进制表示为 -3)

   printf("result: %d\n", result);
   return 0;
}

以上是C/C++中的按位运算符的介绍和示例。通过这些运算符,程序员可以在二进制位级别上进行各种位操作运算。