📜  C 语言中的位运算符 - C 编程语言(1)

📅  最后修改于: 2023-12-03 15:13:48.429000             🧑  作者: Mango

C 语言中的位运算符

在 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 次方,向下取整。