Operadores

Estou com duvida na funcionalidade do operador abaixo

if ((diff & ~handledC) != 0) 

Só conheço o bitwise &

É falta de você analisar a expressão passo-a-passo. Você sabe pelo menos o que é “~”? É um operador que nega todos os bits - o bit 0 vira 1 e o bit 1 vira 0.

Normalmente, você usa esse tipo de expressões com máscaras. Provavelmente é esse o significado do código que você quer entender.

Digamos que você queira setar o bit 6 no valor x. Você faz:

x = x | (1 << 6);

Para você resetar o bit 6, você faz exatamente o contrário, ou seja:

x = x &  ~(1 << 6);

O seu caso é esquisito. Usando o mesmo raciocínio,

if ((x & ~(1 << 6)) != 0)

eu teria o caso em que eu quero ver se qualquer um dos bits está ligado (não incluindo o bit 6).

agora entendi!

muito obrigado