int lowbit(n){
return n&(~n+1);
else
return n&(-n);
}
找到下一个1所表示的数;
当k∈[0,35]时2^kmod37互不相等;
以此来压缩二进制;
取出n在二进制下表示的第k位:(n>>k)&1;
取出整数n在二进制下的第0~k-1位:n&((1<<k)-1);
把整数n在二进制表示的第k位取反:n xor (1<<k);
对整数n在二进制表示下的第k位赋值1:n|(1<<k);
对整数n在二进制表示下的第k位赋值为0:n&(~(1<<k));