按位与运算符(&)
0&0 = 0;1&0 = 0;0&1 = 0;1&1 = 1;
即:两个操作数同为“1”的时候为1;
按位或运算符(|)
0|0 = 0;1|0 = 1;0|1 = 1;1|1 = 1;
即:两个操作数中至少有一个为“1”的时候为1;
异或运算符(^)
0 ^ 0 = 0; 0 ^ 1=1; 1 ^ 0=1; 1 ^ 1=0;
即:两个操作数不同的时候为1;
取反运算符(~)
运算规则:~1=0; ~0=1;
即:对一个二进制数按位取反,即将0变1,1变0。
左移运算符(<<)
将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。
例:a = a<< 2将a的二进制位左移2位,右补0,
左移1位后a = a *2;
若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。
右移运算符(>>)
将一个运算对象的各二进制位全部右移若干位(右边丢弃,左边根据数值的正负来补0或者补1,正数左补0,负数左补1,)。
操作数每右移一位,相当于该数除以2。
例如:a = a>> 2 将a的二进制位右移2位,
左补0 or 补1得看被移数是正还是负。