Operadores

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.

http://pt.wikibooks.org/wiki/Java/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)