Qual a diferença entre o operador not bit a bit (~) e o operador not lógico (!) ??
! eu sei que é usado por exemplo na mesma situação quando eu uso o && e o ||.
agora o ~ não entendi. =(
Qual a diferença entre o operador not bit a bit (~) e o operador not lógico (!) ??
! eu sei que é usado por exemplo na mesma situação quando eu uso o && e o ||.
agora o ~ não entendi. =(
Isso vai lhe ajudar bastante. Vai encontrar vários tipos de operadores.
valeu Fernando, deu mais uma clareada no assunto.
to resolvendo uns exercícios da apostila, mais sobre esse operador num tava muito claro a explicação.
vou deixa esse wikilivros nos favoritos. ;D :idea:
Os operadores de bit atuam sobre todos os bits de uma determinada variável numérica:
int x = 42; //Em binário 00000000 00000000 00000000 00101010
int y = ~x; //Em binário 11111111 11111111 11111111 11010101 = -43
O mesmo vale para o | e o & no contexto de operações bit-a-bit.
Nunca tente entende-los sem olhar números em binário junto.
[quote=Alyssonprs]Qual a diferença entre o operador not bit a bit (~) e o operador not lógico (!) ??
! eu sei que é usado por exemplo na mesma situação quando eu uso o && e o ||.
agora o ~ não entendi. =([/quote]
! , && e || são operadores lógicos.
~ , & , | ^ são operadores binários (conhecido como bitwise)
A diferença é que os primeiros apenas se usam com variáveis booleanas e o segundo com inteiros.
! nega o boleano. O que é verdadeiro vira falso, e vice-versa.
~ nega todos os bits do inteiro , o que era 010001 vira 101110.
&& aplica uma tabela de verdade (AND) ao operandos, & executa uma tabela de verdade a cada bit dos operados.
O mesmo para || e |, apenas a tabela de verdade é diferente. Para estes é OR
Temos ainda o operador ^ que apenas funciona bitwise, também aplica uma tabela de verdade (XOR)