<< 左移 3<<2 = 12 --> 3 * 2 * 2 = 12
>> 右移 3>>1 = 1 --> 3/2 = 1
& 与运算 6 & 3 = 2
| 或运算 6 | 3 = 7
^ 亦或运算 6 ^ 3 = 5
~ 反码 ~6 = -7
按位与运算符(&)
参加运算的两个数据,按二进制位进行“与”运算。
运算规则:
0&0=0;
0&1=0;
1&0=0;
1&1=1;
即:两位同时为“1”,结果才为“1”,否则为0
例如: 3&5 ,分别把3和5换算成二进制,即:
0011 & 0101 = 0001,因为 3 & 5 = 1;
按位或运算符 |
参加运算的两个对象,按二进制位进行“或”运算。
运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1;
即 :参加运算的两个对象只要有一个为1,其值为1。
例如:3|5 即 0000 0011 | 0000 0101 = 0000 0111 因此,3|5的值得7。
异或运算符^
参加运算的两个数据,按二进制位进行“异或”运算。
运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;
即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。
- 可用异或运算符交换两个数
取反运算符
参加运算的一个数据,按二进制位进行“取反”运算。
运算规则:~1=0; ~0=1;
即:对一个二进制数按位取反,即将0变1,1变0。
左移运算符(<<)
将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。
例:a = a << 2 将a的二进制位左移2位,右补0,
左移1位后a = a * 2;
若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。
右移运算符(>>)
将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。
操作数每右移一位,相当于该数除以2。
例如:a = a >> 2 将a的二进制位右移2位,
左补0 or 补1 得看被移数是正还是负。