1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
去掉最后一位     		把右数第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)