位运算符
位运算符 | 作用 | 优先级 |
---|---|---|
~ | 按位取反 | 1 |
<< 和>> | 左移 右移 | 2 |
& | 按位与 | 3 |
^ | 按位异或 | 4 |
或 | 按位或 | 5 |
涉及进制转换内容详见链接:https://blog.csdn.net/qq_48434912/article/details/122898217?spm=1001.2014.3001.5502
1、按位取反(~)
单目运算符,以二进制为单位,1变0,0变1。
2、按位与(&)、按位或(|)
双目运算符,以二进制为单位。
1&1=1 1|1=1
0&0=0 0|0=0
1&0=0 1|0=1
0&1=0 0|1=1
3、异或(^)
双目运算符,以二进制为单位。
运算规则:两个数相同异或为0,不同异或为1。
1^1=0
0^0=0
1^0=1
0^1=1
特性:
- 与1异或具有翻转性(0变1,1变0)
- 与0异或具有保持性(异或后为本身)
- 与一个二进制数连续异或两次后恢复原值不变,具有恢复性
- 异或运算具有交换性(a ^ b = b ^ a)
4、移位运算符(左移位<<)
双目运算符,以二进制为单位。
规则:高位不论0或1都丢弃,低位空位以0填充。
特征:高位丢弃的没有1时,左移 i 位,变成 2^i 倍。
20<<2
20二进制:0001 0100
左移两位:0101 0000
结果:20*2^2=80
5、移位运算符(右移位>>)
规则:低位不论0或1都丢弃,高位空位对于有符号的数填充符号位(正数填0,负数填1),对于无符号的数则填0。
特征:低位丢弃的没有1时,右移 i 位,变成 2^-i 倍,即缩小了 2^i 倍。
20>>2
20二进制:0001 0100
右移两位:0000 0101
结果:20*2^-2=5
注:位运算后若无赋值操作,则变量的值不变。