Limpando o bit mais baixo de um número

5

Eu posso ver neste tutorial sobre manipulação de bit, sob o título "Extraindo cada último bit", que -

Suppose we wish to find the lowest set bit of x (which is known to be non-zero). If we subtract 1 from x then this bit is cleared, but all the other one bits in x remain set.

Eu não entendo como essa afirmação é verdadeira.

Se pegarmos x = 110 , subtrair 1 daria 101 .

Aqui, o bit mais baixo não é apagado. Alguém pode me dizer como estou abordando esse problema de uma maneira errada?

    
por theharshest 28.11.2013 / 01:57
fonte

1 resposta

6

Depois de subtrair 1, precisa de & os dois valores. por exemplo,

int bitremoved = x & (x-1);

No seu exemplo, você acaba com o binário 100.

    
por 28.11.2013 / 02:57
fonte