1:整数加法,运算不能超范围
a+b=(a&b)*2+(a^b);
2:整数减法,运算不能超范围
a-b==a+(~b+1);
a-b=(a&(~b+1))*2+(a^( ~b+1));
3:2的整数幂
(a&(a-1))==0 :T
4:整数的二进制表达中有多少个1
int c-0;
while(a){
c++;
a&=a-1;
}
5:找出不大于N的最大的2的幂指数,N为正数
int m=n>>1;
while(m){
n|=m;
m>>=1;
}
n=(n+1)>>1;
6:2k+1个数,k对相同的数,找出一个独一无二的的数
for(i=1;i<2k+1;i++){
a[0]^=a[i];
}
7:交换两个数
x=x^y;
y=x^y;//x ^y ^y== x
x=x^y;//x ^y ^x== y
8:判断奇偶
n&1== 1;//奇数
n&1== 0;//偶数