<分区>
Possible Duplicates:
How do you set, clear and toggle a single bit in C?
Removing lowest order bit
n
是一个正整数。如何取消其最右边的设置位?
假设 n
= 7
=> n = 0111。
我想要 0110
作为输出。是否有任何简单的按位黑客来实现目标?
<分区>
Possible Duplicates:
How do you set, clear and toggle a single bit in C?
Removing lowest order bit
n
是一个正整数。如何取消其最右边的设置位?
假设 n
= 7
=> n = 0111。
我想要 0110
作为输出。是否有任何简单的按位黑客来实现目标?
最佳答案
尝试 n & (n-1)
其中 &
是 bitwise AND
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!)
关于c++ - 取消设置最右边的设置位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4703964/