C++ 位运算符
位运算符用于对整数数据类型执行位级别的运算。这些运算适用于直接操作位,例如低级编程、图形和加密。
C++ 位运算符列表
下表列出了 C++ 语言支持的位运算符。假设变量 A 为 60,变量 B 为 13,则
运算符 | 说明 | 示例 |
---|---|---|
& | 二进制与运算符如果两个操作数中都存在一位,则将一位复制到结果中。 | (A & B) 将得到 12,即 0000 1100 |
| | 二进制"或"运算符如果在任一操作数中存在该位,则复制该位。 | (A | B) 将得到 61,即 0011 1101 |
^ | 二进制"异或"运算符如果在一个操作数中设置了该位,但两个操作数都没有设置,则复制该位。 | (A ^ B) 将得到 49,即 0011 0001 |
~ | 二进制一补码运算符是一元运算符,具有"翻转"位的效果。 | 由于 (~A ) 是一个有符号二进制数,因此结果为 -61,其二进制补码形式为 1100 0011。 |
<< | 二进制左移运算符。左侧操作数的值将向左移动右侧操作数指定的位数。 | A << 2 的结果为 240,其二进制补码形式为 1111 0000 |
>> | 二进制右移运算符。左侧操作数的值向右移动右侧操作数指定的位数。 | A >> 2 将得到 15,即 0000 1111 |
位运算符示例
尝试以下示例以了解 C++ 中所有可用的位运算符。
将以下 C++ 程序复制并粘贴到 test.cpp 文件中,然后编译并运行该程序。
#include <iostream> using namespace std; main() { unsigned int a = 60; // 60 = 0011 1100 unsigned int b = 13; // 13 = 0000 1101 int c = 0; c = a & b; // 12 = 0000 1100 cout << "Line 1 - Value of c is : " << c << endl ; c = a | b; // 61 = 0011 1101 cout << "Line 2 - Value of c is: " << c << endl ; c = a ^ b; // 49 = 0011 0001 cout << "Line 3 - Value of c is: " << c << endl ; c = ~a; // -61 = 1100 0011 cout << "Line 4 - Value of c is: " << c << endl ; c = a << 2; // 240 = 1111 0000 cout << "Line 5 - Value of c is: " << c << endl ; c = a >> 2; // 15 = 0000 1111 cout << "Line 6 - Value of c is: " << c << endl ; return 0; }
当编译并执行上述代码时,它会产生以下结果 -
Line 1 - Value of c is : 12 Line 2 - Value of c is: 61 Line 3 - Value of c is: 49 Line 4 - Value of c is: -61 Line 5 - Value of c is: 240 Line 6 - Value of c is: 15