与运算(&)
运算法则为遇0得0。也就是说只要有0,结果即为0。eg: 1001 & 1110 = 1000。
与运算与取余的联系: 当b为2的n次方时,有如下替换公式:a % b = a & (b-1); (当b=2n)
或运算(|)
运算法则为遇1得1。也就是说只要有1,结果即为1。eg: 1001 | 1110 = 1011。
非运算(~)
运算法则为按位取反,也就是遇1取0,遇0取1。eg: ~1001 = 0110。
异或运算(^)
运算法则为相同取0,不同取1。异为1,否则为0。eg: 1001 ^ 1110= 0111。
位移运算
左移位操作符<<,低位补0
有符号右移位>>,使用符号扩展:若符号为正,则在高位插入0;若符号为负,则在高位插入1
无符号右移位>>>,使用零扩展:无论正负,都在高位插入0
通常如果需要乘以(左移)或者除以(右移)2的n次方,都可以用移位的放代替。