去掉最后一位:
示例:(101101⇒10110)(101101⇒10110)
位运算:x>>1x>>1
在最后加一个0
示例:(101101⇒1011010)(101101⇒1011010)
位运算:x<<1x<<1
在最后加一个1
示例:(101101⇒1011011)(101101⇒1011011)
位运算:(x<<1)+1(x<<1)+1
把最后一位变成1
示例:(101100⇒101101)(101100⇒101101)
位运算:x|1x|1
把最后一位变成0
示例:101101⇒101100101101⇒101100
位运算:(x|1)−1(x|1)−1
最后一位取反
示例:(101101⇒101100)(101101⇒101100)
位运算:xxor1xxor1
把右数第k位变成1
示例:(101001⇒101101,k=3)(101001⇒101101,k=3)
位运算:x|(1<<(k−1))x|(1<<(k−1))
把右数第k位变成0
示例:(101101⇒101001,k=3)(101101⇒101001,k=3)
位运算:x and (1<<(k−1))x and (1<<(k−1))
右数第k位取反
示例:(101001⇒101101,k=3)(101001⇒101101,k=3)
位运算:x(xor(1<<(k−1)))x(xor(1<<(k−1)))
取整数n在二进制表示下的第k位
位运算:(n>>k) and 1(n>>k) and 1
取整数n在二进制表示下的后k位
位运算:n and ((1<<k)−1)n and ((1<<k)−1)
取末k位
示例:(1101101⇒1101,k=4)(1101101⇒1101,k=4)
位运算:x and ((1<<k)−1)x and ((1<<k)−1)
取右数第k位
示例:(1101101⇒1,k=4)(1101101⇒1,k=4)
位运算:x>>(k−1) and 1x>>(k−1) and 1
把末k位变成1
示例:(101001⇒101111,k=4(101001⇒101111,k=4
位运算:x|((1<<k)−1)x|((1<<k)−1)
末k位取反
示例:(101001⇒100110,k=4(101001⇒100110,k=4
位运算:x xor ((1<<k)−1)x xor ((1<<k)−1)
把右边连续的1变成0
示例:(100101111⇒100100000)(100101111⇒100100000)
位运算:x and (x+1)x and (x+1)
把右起第一个0变成1
示例:(100101111⇒100111111(100101111⇒100111111
位运算:x|(x+1)x|(x+1)
把右边连续的0变成1
示例:(11011000⇒11011111)(11011000⇒11011111)
位运算:x|(x−1)x|(x−1)
取右边连续的1
示例:(100101111⇒1111)(100101111⇒1111)
位运算:(x xor (x+1))>>1(x xor (x+1))>>1
去掉右起第一个1的左边
示例:(100101000⇒1000)(100101000⇒1000)
位运算:x and (x xor (x−1))x and (x xor (x−1))