Unset the rightmost set bit
Unset the rightmost set bit
这个问题已经有了答案:
可能的重复问题:
n
是一个正整数。如何取消它的最右设置位?
假设n
= 7
=> n = 0111。
我想要0110
作为输出。是否有任何简单的位运算技巧来实现这个目标?
admin 更改状态以发布 2023年5月24日
尝试使用 n & (n-1)
,其中 &
是按位与运算符
n = 7 n - 1 =6 n & (n-1)=> 0 1 1 1 (7) & 0 1 1 0 (6) --------- 0 1 1 0 (done!)
编辑(针对Forest的评论做出的回应)
n = 6 n - 1 = 5 n & (n-1)=> 0 1 1 0 (6) & 0 1 0 1 (5) --------- 0 1 0 0 (done!)