常用操作:
(1)求n的二进制中第k位数字: n >> k & 1 //即n右移k位 与上1
举例:
int main(){
int n = 10;
for(int k = 3 ; k >= 0; k--) cout << (n >> k & 1);//即可打印出n的二进制数
return 0 ;
}
(2)返回n二进制数的最后一位1:lowbit(n) = n & -n // n & -n 等于 n & (~n+1)
举例: (原码)x = 1010 (反码)~x = 0101 (补码)~x+1 = 0110 那么lowbit(x) = 0010即10
(原码)x = 101000 (反码)~x = 010111 (补码)~x+1 = 011000 那么lowbit(x) = 001000即1000