C语言提供的位运算符列表:
运算符 | 作用 | 示例 |
---|---|---|
& | 按位与 | 两个操作数同时为1结果为1 |
| | 按位或 | 两个操作数只要有一个为1,结果就为1 |
~ | 按位非 | 操作数为1,结果为0;操作数为0,结果为1 |
^ | 按位异或 | 两个操作数相同,结果为0;不相同结果为1 |
<< | 左移 | 右侧空位补0 |
>> | 右移 | 左侧空位补符号位 |
实际代码中的运用
与运算(&)
- a&1
if ( a&1==1 )
cout<<""奇数";
else
cout<<""偶数";
例如:5&1 => 101 & 001 = 001 = 1 是奇数
6&1 => 110 & 001 = 000 = 0 是偶数
异或(^)
- a^b
if( a^b==0)
cout<<"a等于b";
例如: 5&5 => 101 & 101 = 000 =0
5&1 => 101 & 001 = 100 !=0
左移右移(<< >>)
- n>>=1 右移1位 除以2;
- n<<=1 左移1位 乘以2;