📅  最后修改于: 2023-12-03 14:39:55.803000             🧑  作者: Mango
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