📜  C++ 示例程序中的位运算符 - C++ (1)

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

C++ 示例程序中的位运算符

C++ 中的位运算符是十分有用的工具,它们可以在对程序进行位操作时起到极大的作用。

位运算符的介绍

C++ 中主要的位运算符有以下几种:

  • 按位与 &
  • 按位或 |
  • 按位异或 ^
  • 按位取反 ~
  • 左移 <<
  • 右移 >>

这些运算符都是针对二进制数进行的,通过将数字按位运算后生成新的二进制数字来实现操作。

按位与 &

按位与运算符 & 将两个数字进行按位操作,如果两个数的相应位都为1,那么这一位的结果为1,否则为0。

示例代码:

int a = 5;    // 二进制为: 0101
int b = 3;    // 二进制为: 0011
int c = a & b;// 二进制为: 0001,结果为1
按位或 |

按位或运算符 | 将两个数字进行按位操作,如果两个数的相应位中至少有一个为1,那么这一位的结果为1,否则为0。

示例代码:

int a = 5;    // 二进制为: 0101
int b = 3;    // 二进制为: 0011
int c = a | b;// 二进制为: 0111,结果为7
按位异或 ^

按位异或运算符 ^ 将两个数字进行按位操作,如果两个数的相应位不同,那么这一位的结果为1,否则为0。

示例代码:

int a = 5;     // 二进制为: 0101
int b = 3;     // 二进制为: 0011
int c = a ^ b; // 二进制为: 0110,结果为6
按位取反 ~

按位取反运算符 ~ 将一个数字的二进制表示中的所有位都取反,即1变成0,0变成1。

示例代码:

int a = 5;    // 二进制为: 0101
int b = ~a;   // 二进制为: 1010,结果为-6,因为符号位为1
左移 <<

左移运算符 << 将一个数字的所有位向左移动特定的位数,同时将右侧空出的位用0来填充。

示例代码:

int a = 5;        // 二进制为: 0101
int b = a << 2;   // 二进制为: 10100,结果为20
右移 >>

右移运算符 >> 将一个数字的所有位向右移动特定的位数,如果这个数是有符号的,那么左侧的空出位将使用符号位来填充,否则将用0来填充。

示例代码:

int a = 20;       // 二进制为: 10100
int b = a >> 2;   // 二进制为: 00101,结果为5