位运算功能大全

去掉最后一位
示例:\((101101 \Rightarrow 10110)\)
位运算:\(x>>1\)

在最后加一个0
示例:\((101101\Rightarrow1011010)\)
位运算:\(x<<1\)

在最后加一个1
示例:\((101101\Rightarrow1011011)\)
位运算:\((x<<1)+1\)

把最后一位变成1
示例:\((101100\Rightarrow101101)\)
位运算:\(x|1\)

把最后一位变成0
示例:\(101101\Rightarrow101100\)
位运算:\((x|1)-1\)

最后一位取反
示例:\((101101\Rightarrow101100)\)
位运算:\(x^1\)

把右数第k位变成1
示例:\((101001\Rightarrow101101,k=3)\)
位运算:\(x|(1<<(k-1))\)

把右数第k位变成0
示例:\((101101\Rightarrow101001,k=3)\)
位运算:\(x\ and\ ~(1<<(k-1))\)

右数第k位取反
示例:\((101001\Rightarrow101101,k=3)\)
位运算:\(x (xor (1<<(k-1)))\)

取整数n在二进制表示下的第k位
位运算:\((n>>k)\ and \ 1\)

取整数n在二进制表示下的后k位
位运算:\(n\ and\ ((1<<k)-1)\)

取末k位
示例:\((1101101\Rightarrow1101,k=4)\)
位运算:\(x\ and\ ((1<<k)-1)\)

取右数第k位
示例:\((1101101\Rightarrow1,k=4)\)
位运算:\(x>>(k-1)\ and\ 1\)

把末k位变成1
示例:\((101001\Rightarrow101111,k=4\)
位运算:\(x|((1<<k)-1)\)

末k位取反
示例:\((101001\Rightarrow100110,k=4\)
位运算:\(x\ xor\ ((1<<k)-1)\)

把右边连续的1变成0
示例:\((100101111\Rightarrow100100000)\)
位运算:\(x\ and\ (x+1)\)

把右起第一个0变成1
示例:\((100101111\Rightarrow100111111\)
位运算:\(x|(x+1)\)

把右边连续的0变成1
示例:\((11011000\Rightarrow11011111)\)
位运算:\(x|(x-1)\)

取右边连续的1
示例:\((100101111\Rightarrow1111)\)
位运算:\((x\ xor\ (x+1))>>1\)

去掉右起第一个1的左边
示例:\((100101000\Rightarrow1000)\)
位运算:\(x\ and\ (x\ xor\ (x-1))\)

原文地址:https://www.cnblogs.com/Luvwgyx/p/8409836.html