位运算符是按照二进制进行运算。
& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0
| 按位或 两个相应的二进制位中只要有一个为1,该位的结果值为1
^ 按位异或 若参加运算的两个二进制位值相同则为0,否则为1
~ 取反 ~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0
<< 左移 用来将一个数的各二进制位全部左移N位,右补0
>> 右移 将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0
1. 按位与 &
- 运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;
- 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0
- 例如:3|5 即 0011 & 0101 = 0001
2. 按位或 |
- 运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1;
- 两个相应的二进制位中只要有一个为1,该位的结果值为1
- 例如:3|5 即 0011 | 0101 = 0111
3. 异或 ^
- 运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;
- 参加运算的两个二进制位值相同则为0,否则为1(不进位加法)
- 与0相异或,保留原值
- 交换a和b的值
- a=a^b
- b=b^a
- a=a^b
- 例如:3|5 即 0011 ^ 0101 = 0110
4. 取反 ~
- 运算规则:~1=0; ~0=1;
- 即将0变1,将1变0
- 例如:3 即 ~0011 = 1100
5. 左移 <<
- 将一个数的各二进制位全部左移N位,右补0
- 例如:3 即 0011<< =0110
6. 右移 >>
- 将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0
- 例如:3 即 0011 >> = 0001