Operador estranho

4 respostas
F

Galera estavo estudando um código fonte de um jogo qd me deparei com a seguinte operação

onde oldX é um int e colision  byte assim como COLLISION_RIGHT
   if (oldX < x) {
          colision |= COLLISION_RIGHT;
        } else {
          colision |= COLLISION_LEFT;
        }

Alguém sabe para que serve? |= ???

4 Respostas

T

X |= Y é a mesma coisa que X = X | Y.

E se você não deixou de estudar, viu que | é o operador “OU Bit-a-bit”, ou seja: pegue X e Y e os transforme em binário. Para cada bit, se pelo menos um dos bits for 1, o resultado é 1. Se ambos os bits forem 0, o resultado é 0.

Isso é muito usado, por exemplo, para manipulação de imagens.

J

A operação lógica OR significa operação lógica OU e é representada por ||. O operador OR funciona em qualquer um dos tipos inteiros de Java e com tipos boolean numa expressão condicional do tipo if(bool1 || bool2). Este operador retorna 1 para cada posição em que um dos valores “ORados” possuir um 1 na mesma posição de bit. Se os dois valores tiverem um 0 (zero) na posição de bit, o operador retornará o valor 0. Veja os exemplos na tabela abaixo:

Operação: int_1 || int_2
Valor Decimal Valor Binário
int_1 = 6 0 0 0 0 0 1 1 0
int_2 = 4 0 0 0 0 0 1 0 0
Resultado OR ( || ) 0 0 0 0 0 1 1 0

Operação: boolean_1 || boolean_2
Valor Lógico Valor Binário
boolean_1 = TRUE 1
boolean_2 = FALSE 0
Resultado OR ( || ) 1

OPERADOR AND BIT-A-BIT

A operação lógica AND significa operação lógica E e é representada por &. O operador AND funciona em qualquer um dos tipos inteiros de Java e com tipos boolean numa expressão condicional do tipo if(bool1 & bool2). Este operador retorna 1 para cada posição em que os valores “ANDados” possuírem um 1 simultaneamente na mesma posição de bit. Se um dos valores tiver um 0 (zero) na posição de bit, o operador retornará o valor 0. Veja os exemplos na tabela abaixo:

Operação: int_1 & int_2
Valor Decimal Valor Binário
int_1 = 6 0 0 0 0 0 1 1 0
int_2 = 4 0 0 0 0 0 1 0 0
Resultado AND (&) 0 0 0 0 0 1 0 0

Operação: boolean_1 & boolean_2
Valor Lógico Valor Binário
boolean_1 = TRUE 1
boolean_2 = FALSE 0
Resultado AND (&) 0

E

Na verdade “||”, assim como “&&” só é aplicável a operandos booleanos…

Nas operações lógicas bit a bit é “|” para OR, “&” para AND, “^” para XOR e “~” para NOT. Sendo que os três primeiros são binários, ou seja, possueam a forma <OPERANDO 1><OPERANDO 2> (exemplo: 4 & 5) e o último é unário (~5)…

Além desses, temos também os operadores de deslocamento de bits…

F

thingol:
X |= Y é a mesma coisa que X = X | Y.

E se você não deixou de estudar, viu que | é o operador “OU Bit-a-bit”, ou seja: pegue X e Y e os transforme em binário. Para cada bit, se pelo menos um dos bits for 1, o resultado é 1. Se ambos os bits forem 0, o resultado é 0.

Isso é muito usado, por exemplo, para manipulação de imagens.

Beleza cara já imaginavo mas tinha estranhado este =!!
valeu!

Criado 25 de setembro de 2008
Ultima resposta 26 de set. de 2008
Respostas 4
Participantes 4