去掉最后一位 把右数第k位取反 把右边连续的0变成1 x>>1 x^(1<<(k-1)) x|(x-1) 在最后加一个0 取末k位 取右边连续的1 x<<1 x&((1<<k)-1) (x^(x+1))>>1 在最后加一个1 取右数第k位 去掉右起的第一个1的左边 (x<<1)+1 (x>>(k-1))&1 x&(-x) 把最后一位变成1 把末k位变成1 x|1 x|((1<<k)-1) 把最后一位变成0 末k位取反 (x|1)-1 x^((1<<k)-1) 最后一位取反 把右边连续的1变成0 x^1 (x&(x+1)) 把右数第k位变成1 把右起的第一个0变成1 x|(x<<(k-1)) x|(x+1)
|