&:与,且
性质:两个位都是1时,结果是1,否则为0
用途:
- 清零:任意整数和整数0做与运算,所有位都是0,得出的结果是0
- 取出指定位:任意位和位1做与运算,结果是不变,例如x=10101110取出低4位,只需要和y=00001111做与运算,就可以得出z=00001110
- 判断奇偶:a&1 == 0等价于a % 2 == 0,二进制中,能表示基数,那么二进制的最后一位一定是1。
- 将最后一位变为0:num & (num - 1)会将num的二进制表示的最后一位的1变成0
- 判断一个数是不是2的幂:(num & (num - 1)) == 0,如果一个数是2的次幂,这个数的二进制表示中,一定只有一个位是1,这个数与它减1的数做&运算的结果一定是0
- a & b的结果小于等于min(a,b)
- a & b,当b是(2的次幂)-1时,与运算的值是分散最广的
|:或
性质:两个位都是0时,结果是0,否则为1
用途:
对一个数据的某些位设置为1
^:异或;
性质:两个位相同为0,不同为1;x ^ x = 0 , x ^ 0 = x;遵循交换律、结合律
用途:
- 交换两个数
- 与0异或值不变
- 翻转指定位
~:位取反
用途:
- 使整数的最后一位为零,a & ~1