关于位运算(C++)
1.规则
(1)位与 &
1&1=1
1&0=0
0&1=0
0&0=0
12(0000 1100) & 7(0000 0111) = 4(0000 0100)
(2)位或 |
1|1=1
1|0=1
0|1=1
0|0=0
12(0000 1100) | 7(0000 0111) = 15(0000 1111)
(3)位非 ~
~1=0
~0=1
~ 7(0000 0111) = 248(1111 1000)
(4)异或 ^
1^1=0
1^0=1
0^1=1
0^0=0
12(0000 1100) ^ 7(0000 0111) = 11(0000 1011)
(5)左移 <<
0000 1000<<1=0001 0000
12(0000 1100) << 1 = 24(0000 0110)
(6)右移 >>
0000 1000<<1=0000 0100
12(0000 1100) >> 1 = 6(0000 0110)
2.作用(用法)
&:将指定的地方设为0
&的0 设置为0
&的1 不变
|:将指定的地方设为1
|的0 不变
|的1 设置为1
~置反
~: 将:1 (0000 0001)、3 (0000 0011)、7 (0000 0111)、15 (0000 1111)
设置为:254(1111 1110)、252(1111 1100)、248(1111 1000)、240(1111 0000)
>> or << 得到需要的数字
>> 255>>4:
(1111 1111)变为(0000 1111)
<< 255<<4:
(1111 1111)变为(1111 0000)
3. 代码(例子)
#include<iostream>
using namespace std;
int main(void) {
unsigned char number_12 = 12;
unsigned char number_7 = 7;
cout << (number_12|number_7) << endl;
cout << (number_12&number_7) << endl;
cout << (number_12^number_7) << endl;
unsigned char x = ~7;
cout << (int)x << endl;
cout << (number_7 << 1) << endl;
cout << (number_12 >> 2) << endl;
rewind(stdin);
getchar();
return 0;
}