Bom dia,
Algeum poderia me ajudar em relação a uma breve explicação entre esses operadores
<<, >>, |, &, ?
Tenho um exercicio para fazer usando esses operadores binarios, procurei na internet, mais não explicam direito …
Bom dia,
Algeum poderia me ajudar em relação a uma breve explicação entre esses operadores
<<, >>, |, &, ?
Tenho um exercicio para fazer usando esses operadores binarios, procurei na internet, mais não explicam direito …
Na web existem diversos exemplos.
Acho que você não procurou direito.
Cuidado com o conceito. Operador binário é aquele que atua sobre dois operandos, não necessariamente nos valores binários.
Seguindo essa definição, ? não é um operador binário, mas sim um operador ternário (três operandos).
Veja um exemplo. Note que o tipo int em Java usa 32 bits (4 bytes), estou listando apenas os últimos 4 bits dos exemplos.
[code]public class Binario {
public static void main( String[] args ) {
// 2 em binário: 0010
int n1 = 2;
// 3 em binário: 0011
int n2 = 3;
// desloca os bits de n1 uma casa para a direita
// 0010 (2) vira 0001 (1), preenchendo com zeros a esquerda
System.out.println( n1 >> 1 );
// desloca os bits de n1 duas casa para a direita
// 0010 (2) vira 0000 (0), preenchendo com zeros a esquerda
System.out.println( n1 >> 2 );
// desloca os bits de n1 uma casa para a esquerda
// 0010 (2) vira 0100 (4), preenchendo com zeros a direita
System.out.println( n1 << 1 );
// desloca os bits de n1 duas casa para a esquerda
// 0010 (2) vira 1000 (8), preenchendo com zeros a direita
System.out.println( n1 << 2 );
// OU
// 0010 (2)
// 0011 (3)
// ----
// 0011 (3)
System.out.println( n1 | n2 );
// E
// 0010 (2)
// 0011 (3)
// ----
// 0010 (2)
System.out.println( n1 & n2 );
}
}[/code]
Dê uma lida aqui: http://en.wikipedia.org/wiki/Bitwise_operation
E aqui: http://pt.wikipedia.org/wiki/Lógica_binária
[]'s
[quote=jorhudson]Bom dia,
Algeum poderia me ajudar em relação a uma breve explicação entre esses operadores
<<, >>, |, &, ?
Tenho um exercicio para fazer usando esses operadores binarios, procurei na internet, mais não explicam direito … :([/quote]
<< deslocamento de bits para a esquerda se você tiver:
byte valorBinario = 3;
binario = valorBinario << 2;
ficara com o valor 12 pois, o valorBinario em bits seria igual 00000011 ao deslocarmos os bits 2 casas para esquerda teremos 00001100, que equivale a 12 em binário
>> deslocamento de bits para a direita, conforme o exemplo acima se a gente fizer:
byte valorBinario = 3;
binario = valorBinario << 2;
binario = valorBinario >> 1;
ficara com o valor 6 pois, o valorBinario em bits seria igual 00001100 ao deslocarmos os bits 1 casa para direita teremos 00000110, que equivale a 6 em binário
| (or bit a bit) , se tivermos dois valores como 12 e 1 em binario e fizermos um or bit a bit teremos como como resultado o valor 13 pois ele compara bit por bit e se um dos bits comparados estiver “ligado” ele vai retornar 1
00001100 //12 | 1
00000001
00001101 //= 13
& (and bit a bit) , se tivermos dois valores como 13 e 1 em binario e fizermos um and bit a bit teremos como como resultado o valor 1 pois pois ele compara bit por bit e somente se os dois bits estiverem “ligados” ele vai retornar 1, no caso somente o bit menos significativo está ligado
00001101 //13 | 1
00000001
00000001 //= 1
? é um operador ternário não tem nada a haver com operadores bit a bit. Ele funciona da seguinte maneira: variavel ? chamaEstaFuncaoSeVerdadeiro() : chamaEstaFuncaoSeFalso;
é equivalente a:
if (variavel)
chamaEstaFuncaoSeVerdadeiro();
else
chamaEstaFuncaoSeFalso;