📅  最后修改于: 2023-12-03 14:39:37.715000             🧑  作者: Mango
按位运算符是用来在二进制数的位级别上进行操作的运算符。在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++中的按位运算符的介绍和示例。通过这些运算符,程序员可以在二进制位级别上进行各种位操作运算。