Estou com duvida na funcionalidade do operador abaixo
if ((diff & ~handledC) != 0)
Só conheço o bitwise &
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