&(与)
运算规则:
0&0 = 0 类似于 false&false = false
0&1 = 0 类似于 false&true = false
1&0 = 0 类似于 true&false = false
1&1 = 1 类似于 true&true = true
总结:1&1 = 1,其他都是 0 ,有0则0
用途:
1)清零
如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。
2)判断奇偶
只要根据最未位是0还是1来决定,为0就是偶数,为1就是奇数。因此可以用if ((a & 1) == 0)代替if (a % 2 == 0)来判断a是不是偶数。
3)取一个数的指定位
取数 X=1010 1110 的低4位,只需要另找一个数Y,令Y的低4位为1,其余位为0,即Y=0000 1111,然后将X与Y进行按位与运算(X&Y=0000 1110)即可得到X的指定位。
|(或)
运算规则:
0|0 = 0 类似于 false|false = false
0|1 = 1 类似于 false|true = true
1|0 = 1 类似于 true|false = true
1|1 = 1 类似于 true|true = true
总结:0|0 = 0 ,其他都是1,有1则1
用途:
1)取一个数的指定位
将数 X=1010 1110 的低4位设置为1,只需要另找一个数Y,令Y的低4位为1,其余位为0,即Y=0000 1111,然后将X与Y进行按位或运算(X|Y=1010 1111)即可得到。
^(异或)
运算规则:
0^0 = 0
0^1 = 1
1^0 = 1
1^1 = 0
总结:相同为0,不同为1
~(取反)
定义:参加运算的一个数据,按二进制进行”取反”运算。
运算规则:
~1=0
~0=1
总结:对一个二进制数按位取反,即将0变1,1变0。
<<(左移)
定义:将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。
设 a=1010 1110,a = a<< 2 将a的二进制位左移2位、右补0,即得a=1011 1000。
若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。
>>(右移)
定义:将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。
例如:a=a>>2 将a的二进制位右移2位,左补0 或者 左补1得看被移数是正还是负。
操作数每右移一位,相当于该数除以2。