位运算介绍
- 1.左移 <<
表示二进制位左移一位,末位补0---在数值上相当于乘2。
- 2.右移 >>
表示二进制位右移一位,末位丢弃---在数值上相当于除以2。
- 3.and (与) &
两个二进制数对应位(位数少的前面补0)进行&操作。
1&1=1,其余情况都为0
技巧:一般用于二进制下的取位操作。想知道二进制下的某位是否为1,可以&该位对应的十进制数,如果返回的是原数则为1;反之为0。最常用的是a&1判断奇偶性,返回1位奇数,返回0位偶数。 - 4.or (或) |
两个二进制数对应位(位数少的前面补0)进行|操作。
0&0=0,其余情况都为1 - 5.取反 ~
二进制数每个位对应取反。
- 6.异或 ^
判断两个二进制数对应位(位数少前面补0)是不是一样,相同为0,不同为1相当于不进位的加法运算。
技巧:一个二进制数 ^0不变,^1最后一位取反。
同一个数异或两次和异或一次互为逆运算,即异或两次原数不变。
易错点总结
- 1.取反坑点:例如一个int类型的数据1101,取反后不是0010。int类型一共有32位,故前面还有28位取反为1.
- 2.请一定注意优先级问题!!!请一定注意优先级问题!!!请一定注意优先级问题!!!
故a^b==c^d代表的意思是a^(b==c)^d,正确写法是(a^b)==(c^d),请一定注意括号。