参考资料:
http://baike.baidu.com/view/379209.htm
http://wenku.baidu.com/view/a3c70f641ed9ad51f01df2f1.html
(1) & 按位与 如果两个相应的二进制位都为1,则该位为1,否则为0
应用:二进制取位。
例如:a & 1 可以用来判断a的奇偶,结果为1则是奇数,为0则是偶数。
(2) | 按位或 两个相应的二进制位中只要有一个为1,则该位为1,否则为0
应用:对二进制位上的特定位进行无条件赋值。
例如:a | b 就是把二进制最末位强制改为1,如果需要改为零,则 a | b - 1 即可。其实际意义是把这个数强行变为最接近的偶数。
(3) ^ 按位异或 两个相应的二进制位值相同为0,不同为1
应用:1,对二进制位的特定一位进行取反操作,因为异或可以这样定义:0和1异或0都不变,异或1则取反。
2,异或运算的逆运算是它本身,即:(a^b)^b = a; 可以用于简单加密。
3,用于交换两个变量的值。a=a^b; b=b^a; a=a^b;
(4) ~ 按位取反 指定位1变0,0变1
应用:求整数的二进制反码。
如果~a,a为无符号整数,则得到的值是它与该类型上界的差。
(5) << 左移 用来将一个数的各二进制位左移N位,右边补零,高位溢出舍去
应用:a << b 等效于 a乘以2的b次方
(6) >> 右移 将一个数各二进制位右移N位,低位舍弃,无符号整数高位补零,有符号整数高位情况视系统而定
应用: a >> b 等效于 a除以2的b次方