一.相关符号
&(与)、|(或)、^(异或,二者不同则为1,可以理解为不进位的加法)、~(非,取反)
<<(左移,用符号位填充高位) >>(右移,无>>>) >>>(左移,用0填充高位)
注:对于Int类型数据<<35和<<3是一样的,因为Int类型只有32位(同理,long型超过64就是等价的)
二.相关技巧
1.判断x奇偶数:用x和1进行与运算,x&1结果是1,是奇数;若为0,则是偶数。
2.连续异或^可以消除重复:上面提到两者相同,异或为0,而a^0=a,那,那么多个数进行异或运算时
例如:a^a^b^c^c=b
3.计算十进制转二进制后1的个数的三种方法:
(1)a[i] = x&1; x>>=1; 把二进制的每一位存放在数组a中,再用一个for循环判断数组里1的个数
(2)思路和第一个方法一样,只不过移动的是1,进行判断
(3)while (x!=0) { x= (x-1)&x; count++; } x-1和x进行与运算,进行几次就有几个1,最后x变成0,代码简洁。