Alguém me explica isso: int x=1|2|3|4;

2 respostas
mateusviccari

Vi isso em um comando e fiquei totalmente boiando, não soube nem criar um título melhor pro tópico…
Resolvi fazer o teste:

public class Testes{ public static void main(String[] args){ int x=1|2|3|4; System.out.println(x); } }
E o retorno foi 7.
Mas de onde veio esse 7 ?

2 Respostas

tnaires

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html

Henrique_Moraes

Amigo, isso é Operadores Bit-a-Bit, eles realizam suas operações sobre os bits de um número, e não sobre o seu valor.

O valor binário de 1 = 0001
O valor binário de 2 = 0010
O valor binário de 3 = 0011
O valor binário de 4 = 0100

O operador OR inclusivo (|), que retorna 0 caso ambos os bits valerem 0 e retorna 1 caso contrário.

0001|0010|0011|0100 = 0111

Resultado = 0111(Valor binário de 7) = 7

Para entender melhor, procure sobre operadores bit-a-bit e tabela decimal-binario.

vlw

Criado 20 de abril de 2012
Ultima resposta 20 de abr. de 2012
Respostas 2
Participantes 3