📅  最后修改于: 2023-12-03 15:13:48.429000             🧑  作者: Mango
在 C 语言中,位运算符是对整数进行操作的运算符。位运算符使用二进制数操作。以下是 C 语言中常用的位运算符:
按位与运算符用于将两个数的每个对应的位进行比较。如果两个相应位都为 1,则该位的结果为 1。否则,结果为 0。
int a = 6; // 0110
int b = 3; // 0011
int c = a & b; // 0010,结果为 2
按位或运算符用于将两个数的每个对应的位进行比较。如果两个相应位中有一个为 1,则该位的结果为 1。否则,结果为 0。
int a = 6; // 0110
int b = 3; // 0011
int c = a | b; // 0111,结果为 7
按位异或运算符用于将两个数的每个对应的位进行比较。如果两个相应位不相同,则该位的结果为 1。否则,结果为 0。
int a = 6; // 0110
int b = 3; // 0011
int c = a ^ b; // 0101,结果为 5
按位取反运算符是一元运算符,用于将一个数的每个二进制位取反。
int a = 6; // 0110
int b = ~a; // 1001,结果为 -7
左移运算符用于将一个数的二进制位向左移动指定的位数。左移运算符用两个小于号(<<)表示。
int a = 6; // 0110
int b = a << 2; // 1100,结果为 24
右移运算符用于将一个数的二进制位向右移动指定的位数。右移运算符用两个大于号(>>)表示。
int a = 6; // 0110
int b = a >> 1; // 0011,结果为 3
注意:右移运算符对于有符号整数来说,最高位是符号位,如果是 1,则左侧会以 1 填充。因此,右移只是将该数除以 2 的 n 次方,向下取整。