注意:位运算符是对二进制位进行操作的。
& 按位与
| 按位或
^ 按位异或
~ 取反
<< 左移
>> 右移
一、按位与运算符&
1、对两个数的二进制对应的位相与;
2、同为1时,结果才为1;
都是对二进制进行操作
//例如10和11
1 0 1 0
1 0 1 1
————————//对应的位进行与运算
1 0 1 0 //同为1,结果才为1
二、按位或 |
1、同样参与运算的两数二进制对应的位相或;
2、相或的两位只要有1,结果就为1;
//10和11进行或运算
1 0 1 0
1 0 1 1
————————
1 0 1 1//只要有一个为1,运算结果就为1
三、按位异或^
按位异或同样是针对二进制的,例如5和8进行异或运算,结果为13,原因是5和8的二进制对应的位进行异或,不同则结果为1,相同则为0。
//5和8进行异或运算
0 0 1 1
1 0 0 0
————————
1 0 1 1//两者不同则结果为1
四、取反~
取反就是对原数二进制的对应位取反,1变0,0变1.例如10,他的二进制表示为1010,对应的取反就是0101,取反也是原码的反码。
这里介绍一下关于原码,反码,补码之间的关系
原码就是原来的二进制数,x;
反码就是对原码取反,~x;
补码就是反码加1,即是~x + 1;
#include <iostream>
using namespace std;
int main ()
{
int n = 10;
unsigned int x = -n;
for(int i = 31; i >= 0; i--) cout << (x >> i & 1);
cout << endl;
return 0;
}
上面的代码就是运行求反码的。
五、左移与右移<< >>
左移:
右移:
基本就是以上情况
下面是代码的相关演示:
二进制的表示: