位运算:
优先度低于+-*/
&与:0&1,0&0 =0,1&1=1,可以通过n&(n-1)使得最末尾的1变成0,进而算出n中有多少1
异或运算,11=0, 0^0 = 0, 1^0 = 1, 两个数相同就取0,不同就取1,异或特殊性在于n^n=0, 所以找出n-1个重复两次的数的数组里有一个数没重复的时候,用异或
无符号位移,在二进制中,最前面的一位表示正负,若1^(-1),则前31位为1,最后一位是0。用>>>位移就不用考虑最前面的正负号,直接为0
位运算:
优先度低于+-*/
&与:0&1,0&0 =0,1&1=1,可以通过n&(n-1)使得最末尾的1变成0,进而算出n中有多少1
异或运算,11=0, 0^0 = 0, 1^0 = 1, 两个数相同就取0,不同就取1,异或特殊性在于n^n=0, 所以找出n-1个重复两次的数的数组里有一个数没重复的时候,用异或
无符号位移,在二进制中,最前面的一位表示正负,若1^(-1),则前31位为1,最后一位是0。用>>>位移就不用考虑最前面的正负号,直接为0