位运算功能大全

本文详细介绍了一系列位运算操作,包括但不限于去除、添加二进制位,改变特定位置的位,以及复杂的位操作如连续1变为0,连续0变为1等。通过具体的二进制示例,清晰地展示了各种位运算的应用场景。

去掉最后一位
示例:\((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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值