GARANTIR DESCONTO

Fórum Intrução lt;XORgt; O Que Ela quot;Fazquot;??? #202947

25/12/2003

0

O Que a Instrução XOR Faz??/
Alguem Pode Me Dar Um Exemplo. Obrigado.


Marco Salles

Marco Salles

Responder

Posts

25/12/2003

Edilcimar

xor é uma comparação a nível de bit, veja o help do delphi ele pega os zeros e uns de uma variável e compara com os zeros e uns de outra variável. Xor significa exclusive or


Responder

Gostei + 0

26/12/2003

::d::a::m::m::i::t::

tipo...o resultado eh verdadeiro se APENAS UMA das sentenças for verdadeira....


Responder

Gostei + 0

26/12/2003

Beppe

tipo...o resultado eh verdadeiro se APENAS UMA das sentenças for verdadeira....


Sim, mas para A [b:be71b1a07c]xor[/b:be71b1a07c] B, apenas se A e B forem expressões booleanas.

Tabelas verdade:
Boolean
  XOR | False | True 
----------------------
False | False | True
----------------------
True  | True  | False

Inteiro
XOR | 0 | 1
------------
  0 | 0 | 1
------------
  1 | 1 | 0


Quando aplicado a inteiro, o operador XOR compara bit a bit as expressões, e o bit resultante está conforme a tabela verdade.


Responder

Gostei + 0

28/12/2003

Marco Salles

[quote:1c4cfbda87=´::d::a::m::m::i::t::´]tipo...o resultado eh verdadeiro se APENAS UMA das sentenças for verdadeira....


Sim, mas para A [b:1c4cfbda87]xor[/b:1c4cfbda87] B, apenas se A e B forem expressões booleanas.

Tabelas verdade:
Boolean
  XOR | False | True 
----------------------
False | False | True
----------------------
True  | True  | False

Inteiro
XOR | 0 | 1
------------
  0 | 0 | 0
------------
  1 | 1 | 0


Quando aplicado a inteiro, o operador XOR compara bit a bit as expressões, e o bit resultante está conforme a tabela verdade.[/quote:1c4cfbda87]

Eu Recordeim-me a Pouco , Dos Tempos Em Que Fiz Engenharia Que a
Função Xor = ((X)And(Not(Y))OR((not(X)And(Y)) O Que Siginifica Em Outras Palavras Que Será Verdadeiro Se Apenas Umas Das Sentenças For Verdadeira. O Beep Levantou Uma Tabela Verdade Onde As ´Coisas´ Se Comportam De Maneira Diferente. Pois Bem, Sem Levantar Dúvidas Sobre o Vasto Conhecimento Do Nosso Amigo(Que Esta Sempre Nos Socorrendo) Gostaria De Aprofundar Um Pouco Mais No Assunto.
Por Curiosidade Escrevi O Código Abaixo No Evento De Um Botaõ.
PS:Não Sei Nem Se Posso Escrever, Mas o Projeto Compilo e Vamos Embora....
//Evento OnClick De Um Botão:
var
Res:Integer;
Begin
Res:=0 Xor 1;
ShowMessage(IntToStr(Res));//a Resposta Foi ´1´ Diferente Da Tabela
End;

Continuei a Escrever...

var
Res:Integer;
Begin
Res:=01 Xor 11;
ShowMessage(IntToStr(Res));//a Resposta Foi ´10´ Diferente Da Tabela
End;

Continuei a Escrever...

var
Res:Integer;
Begin
Res:=011 Xor 110;
ShowMessage(IntToStr(Res));//a Resposta Foi ´101´ Diferente Da Tabela
End;

Eu Pararia De Ficar Testando e Acharia Que o Beep Deve Ter Feito Alguma Confusão e Daria O Caso Por Encerrado. Mas Aconteceu Um Fato Novo Que Confesso Me Deixou Sem Resposta. Foi Quando Eu Escrevi a Seguinte Linha De Código.

var
Res:Integer;
Begin
Res:=0110 Xor 1100;
ShowMessage(IntToStr(Res));//a Resposta Foi ´1058´ Diferente Da
Tabela e De Toda
Lógica......
End;
Apareceu 1058. Alguem Sabe o Que Siginifica Isto :?: .Na Verdade O Que a Função Xop Faz. :?: Alguem Pode Dar Uma Explicação Dos Fatos :?:

OBS:Quero Levantar os Vastos Conhecimentos Apresentados Pelo Nosso
Companheiro Beep Ao Longo De Todo Forum. Momento Nenhum e
Nem Tenho Interesse e Condições Para Afrontar Conhecimentos De
Ninguem. Sou Apenas Mais Um No Meio Dessa Massa Que Gosta Do
Que Do Que Faz . Muito Obrigado Beep, Sua Opinião é Sempre Muito
Importante.


Responder

Gostei + 0

28/12/2003

Cebikyn

Não foge tanto da lógica:

0110 : 00001101110
xor
1100 : 10001001100

resulta em: 10000100010, que em decimais é 1058.

var Res:Integer; Begin Res:=0110 Xor 1100; ShowMessage(IntToStr(Res));//a Resposta Foi ´1058´ Diferente Da Tabela e De Toda Lógica......



Responder

Gostei + 0

28/12/2003

Marco Salles

Não foge tanto da lógica: 0110 : 00001101110 xor 1100 : 10001001100 resulta em: 10000100010, que em decimais é 1058. [quote:0f10f12c10]var Res:Integer; Begin Res:=0110 Xor 1100; ShowMessage(IntToStr(Res));//a Resposta Foi ´1058´ Diferente Da Tabela e De Toda Lógica......
[/quote:0f10f12c10]

Desculpe Amigo , mas Voce Esta Dando Uma Resposta De Trâs Para a Frente. Voce Vez Uma Decodificação.
Mas O Que Que ´0110´ Tem a Ver Com ´00001101110´ :?: :?:


Responder

Gostei + 0

28/12/2003

Beppe

Realmente, eu errei e esqueci de uma coisa, também. :(

Eu editei meu tópico anterior para consertar. Na tabela verdade de inteiros, eu tinha colocado 0 XOR 1 como 0 por descuido. Na verdade, 0 XOR 1 é 1.

E esqueci de dizer de que estava usando a base [i:2d45aac204]binária[/i:2d45aac204], que representa qualquer quantia através de 0s e 1s. Achei que falando ´bit a bit´ era o suficiente.

Eu acho até interessante alguns dos resultados que mostrou. Mas o processador(leia: a unidade lógica dele) não sabe sobre números decimais. A representação decimal é usada para nossa comodidade. Logo, quem quiser aplicar um operador como o XOR numa sequência de dígitos, precisa convertê-la para um base múltipla de 2, a base binária(base 2) sendo a mais simples delas.


Ex:
Decimal: 1234 XOR 4321

Em binário:
0010011010010
1000011100001
------------------
1010000110011 = 5171(base 10)


Dica: use a calculadora em modo científico e alterne entre as bases.

Só para complementar, em expressões booleanas, o operador [b:2d45aac204]XOR[/b:2d45aac204] equivale ao operador [b:2d45aac204]<>[/b:2d45aac204](diferente de).

Tentei ser mais claro agora, mas se alguém ficou com alguma dúvida, terei prazer em esclarecer. :)


Responder

Gostei + 0

28/12/2003

Edilcimar

e a minha resposta continua certa XOR significa eXcluvie OR


Responder

Gostei + 0

28/12/2003

Cebikyn

0110 (decimal) = 00001101110 (binário), como o Beppe colocou, o computador não usa decimais, mas ao colocar 0110 no código, o Delphi interpreta como decimal.

[quote:d3aee7c902=´Marco Salles´]Desculpe Amigo , mas Voce Esta Dando Uma Resposta De Trâs Para a Frente. Voce Vez Uma Decodificação.
Mas O Que Que ´0110´ Tem a Ver Com ´00001101110´ :?: :?:[/quote:d3aee7c902]


Responder

Gostei + 0

28/12/2003

Marco Salles

Todos Estão Certos. O BEEP Já Editou Sua Tabela Verdade e Aprofundou Mais No Assunto,O Cebikyn Recolocou Que ´0110 (decimal) = 00001101110 (binário)´ e o Edilcimar Continua Firme Em Sua Primeira Aparição Sobre Este Tópico:´a minha resposta continua certa XOR significa eXcluvie OR´. E Eu Agradeço e Dou o Tópico Por Encerrado. :P


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar