Operadores | & ^ ~

15 respostas
keller

Não entendi eles …
[e nem me recordo deles na prova]

Alguém tem alguma dica para para se trabalhar com eles? :smiley:

15 Respostas

J2Alex

O & ( E Lógico booleano ) e o | (OU lógico booleano inclusivo) funcionam quase da mesma forma que && e ||, a única diferença é que eles sempre avaliam os dois operadores. Daí você pode criar expressões do tipo:

valor1 < 100 & valor2++ > 10

(Isso não deve ser muito usado… deixa o código confuso)

Neste caso valor2 sempre será incrementado, independente de valor1.

Já o ^ ( OU lógico booleano exclusivo ) somente será verdadeiro (true) se apenas uma das duas expressões for true e a outra for false:

true ^ true -> false
true ^ false -> true
false ^ true -> true
false ^ false -> false

Já o operador ~ eu não conheço… :roll:

keller

A parte do ^ facil! não pensei que era tão simples…
mas e se for aplicada a numeros? :roll:

e no 1o exemplo que você deu, qual valores você pensou
para valor1 e valor2? :roll:

Obrigado por ajudar! :smiley:

T

Tem tudo no livro da Kathy Sierra, bem explicado, não tem erro!

[]'s Tjmm.

Grinvon

O operador & gui, sua condição é ACEITA, apenas se ambos os lados forem verdadeiros.

Ex:

int x = 10;
int y = 12;

if (x > 9 & y < 13)

System.out.println(Verdade);

else

System.out.println(Falso);

Como x é maior do que 9 E TAMBÉM y é menor do que 13, então será mostrado Verdade…

K

E o ~ serve para negar!
Exemplo

byte a = 10;
byte b = (byte) ~a;

O valor de a em binario seria: 00001010
Negando isso seria inverter os valores, aonde tem 1 ficaria 0 e 0 ficaria 1

11110101

Isso é um numero negativo transformando para positivo

00001010

  • 1
    

00001011

que em decimal é = 11

resumindo b = -11

Caracas, deu para entender???

J2Alex

Como assim, aplicada a números? O ^ é um operador lógico - vai sempre testar valores falsos e verdadeiros. Exemplo:

valor1 < 1 ^ valor2 > 10

Não importa os valores de valor1 e valor2, o importante é entender que independentemente do valor de valor1, a condição de valor2 será SEMPRE avaliada.

Beleza?

Espero ter ajudado. :smiley:

keller

Tjmm:
Tem tudo no livro da Kathy Sierra, bem explicado, não tem erro!

[]'s Tjmm.

Tem erro sim!
Se eu estou estudando e nao consegui absorver o conteudo, aonde eu vou?
Venho ao GUJ trazer minhas duvidas, que eu nao consegui entender… valeu?

Se não estiver afim de ajudar não poste respostas do tipo:
No livro tem! OU procure no google! :?

keller

Grinvon:
O operador & gui, sua condição é ACEITA, apenas se ambos os lados forem verdadeiros.

Ex:

int x = 10;
int y = 12;

if (x > 9 & y < 13)

System.out.println(Verdade);

else

System.out.println(Falso);

Como x é maior do que 9 E TAMBÉM y é menor do que 13, então será mostrado Verdade…

Valeu Grinvon! Muito bem explicado! :thumbup:

keller

Kabaldf:
E o ~ serve para negar!
Exemplo

byte a = 10;
byte b = (byte) ~a;

O valor de a em binario seria: 00001010
Negando isso seria inverter os valores, aonde tem 1 ficaria 0 e 0 ficaria 1

11110101

Isso é um numero negativo transformando para positivo

00001010

  • 1
    

00001011

que em decimal é = 11

resumindo b = -11

Caracas, deu para entender???

Deu sim tranquilo! tipo:

int x = 4;
int y = ~x;

y = -5

Seria isso? :smiley:

keller

Faltou aquela receitinha de bolo do |
alguem se habilita? :smiley:

Obrigado a todos! :thumbup:

T

gui:
Tjmm:
Tem tudo no livro da Kathy Sierra, bem explicado, não tem erro!

[]'s Tjmm.

Tem erro sim!
Se eu estou estudando e nao consegui absorver o conteudo, aonde eu vou?
Venho ao GUJ trazer minhas duvidas, que eu nao consegui entender… valeu?

Se não estiver afim de ajudar não poste respostas do tipo:
No livro tem! OU procure no google! :?

Gui…é que não encontrei lugar melhor explicando isso do que no livro da Kathy Sierra! É o lugar mais bem explicado que encontrei! É só ler e tentar executar os exemplos em alguma IDE e ver os resultados!
Talvez você esteja com alguma dificuldade em operação de binários! Aí são outros 500! Mas é simples!

Se quiser entender essas coisas todas…pegue algum material de informática básica, que tenha operações sobre Binários! Aí fica legal! Eu tenho 1 bem legal! Tô mandando uma PM para você com o link para fazer download!

[]'s Tjmm.

djorodrigo

gui,

a diferença de utilizar os operadores | e || ou o & e &&, é que sempre o operador | ou & avalia as duas expressões, exemplo:

if (a || b)

no caso acima se a for true, logo entra na condição do if.

Se for feito assim:
if (a | b)
nesse caso é feito o teste da variavel a e b, sempre, mesmo que o a seja true.
Vale tbm para o AND -> &(Unário) e &&.

Entendeu??
Acho que ficou mais fácil…
ahhh, o operador ~(til) serve basicamente para fazer a negação de bits ou a inversão de bits.

Entendeu??
Tipo: ~0000 0001
Fica: 1111 1110

Entendeu??
Se não entendeu, posta a dúvida…
Abraços…

keller

Agora sim 100%!
Obrigado a todos que ajudaram!
Valeu Galera! :thumbup:

G

Acho que o que ele quiz perguntar foi usando eles em números… exemplo…

int b = 3 | 4;

K

Em números também é facil
nesse seu caso se você fizer isso
int a = 3 | 5;
seria assim

3 em binario = 00011
5 em binario = 00101
3 | 5 seria…= 00111
00111 em decimal = 7;

so vendo o seguinte
1 | 1 = 1
1 | 0 = 1
0 | 0 = 0

Deu para entender?
:wink:

Criado 12 de abril de 2005
Ultima resposta 25 de abr. de 2005
Respostas 15
Participantes 7