Disjunção exclusiva

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Wikitext.svg
Este artigo ou seção precisa ser wikificado (desde fevereiro de 2012).
Por favor ajude a formatar este artigo de acordo com as diretrizes estabelecidas no livro de estilo.

Ou exclusivo ou disjunção exclusiva, conhecido geralmente por XOR ou por EXOR (também XOU ou EOU), é uma operação lógica entre dois operandos que resulta em um valor lógico verdadeiro se e somente se exatamente um dos operandos possui valor verdadeiro. Pode ser sintetizado como um detector de diferenças entre dois operandos lógicos.

Definição[editar | editar código-fonte]

A disjunção exclusiva (escrito como \oplus , +, ou ainda ≠) é uma operação sobre dois ou mais valores lógicos, tipicamente os valores de duas proposições, que produz um valor verdadeiro apenas se a quantidade de operadores verdadeiros for ímpar.

Tabela de Verdade[editar | editar código-fonte]

A tabela de verdade para p XOR q de duas entradas é a seguinte:

Tabela verdade da função XOR
Entradas Saída
A B S
0 0 0
0 1 1
1 0 1
1 1 0
Símbolo

Xor-gate-en.svg

Outras portas
AND - OR - NOT - NOR - NAND - XOR - XNOR


Ou exclusivo
p q p \oplus q
F F F
F V V
V F V
V V F

Equivalências, eliminação, e introdução[editar | editar código-fonte]

As seguintes equivalencias podem ser deduzidas, escritas com operadores lógicos, na notação matemática:

\begin{matrix}
p \oplus q & = & (p \land \lnot q) & \lor & (\lnot p \land q) = p\overline{q} \oplus \overline{p}q \\
\\
      & = & (p \lor q) & \land & (\lnot p \lor \lnot q) = (p+q)(\overline{p}\oplus \overline{q}) \\
\\
      & = & (p \lor q) & \land & \lnot (p \land q) = (p \oplus q)(\overline{pq})
\end{matrix}


o Valor do XOR é verdadeiro quando o números de 1's é ímpar.

A disjunção exclusiva p \oplus q\! pode ser expressa em termos da conjunção (\land), da disjunção (\lor), e da negação (\lnot), como segue:

\begin{matrix}
p \oplus q & = & (p \land \lnot q) \lor (\lnot p \land q)
\end{matrix}


A disjunção exclusiva p \oplus q\! também pode ser expressa da seguinte maneira:

\begin{matrix}
p \oplus q & = & \lnot (p \land q) \land (p \lor q)
\end{matrix}


Esta representação do XOR pode ser útil para a construção de um circuito ou uma rede, porque ela possui um único operador de negação (\lnot) e um pequeno número de operadores OR (\lor) e AND(\land). Como é mostrado abaixo:

\begin{matrix}
p \oplus q & = & (p \land \lnot q) & \lor & (\lnot p \land q) \\
& = & ((p \land \lnot q) \lor \lnot p) & \and & ((p \land \lnot q) \lor q) \\
& = & ((p \lor \lnot p) \land (\lnot q \lor \lnot p)) & \land & ((p \lor q) \land (\lnot q \lor q)) \\
& = & (\lnot p \lor \lnot q) & \land & (p \lor q) \\
& = & \lnot (p \land q) & \land & (p \lor q)
\end{matrix}


Às vezes também é útil escrever p XOR q da seguinte maneira:

\begin{matrix}
p \oplus q & = & \lnot ((p \land q) \lor (\lnot p \land \lnot q))
\end{matrix}


Esta equivalência pode ser estabelecida aplicando a Lei de De Morgan duas vezes na quarta linha da prova acima.

O XOR também equivale a negação do bicondicional lógico.

'Ou exclusivo' na linguagem natural[editar | editar código-fonte]

O Oxford English Dictionary explica "um dos dois...ou", como segue:

A função primária de um dos, etc, é enfatizar a indiferença de duas ou mais coisas ou cursos. Mas a função secundária é enfatizar a exclusividade mútua = um dos dois, mas não ambos.

Seguindo esta intuição de senso comum sobre "ou", às vezes é discutido que em muitas linguagens naturais, inclusive inglês, a palavra "ou" tem um sentido "exclusivo". A disjunção exclusiva de um par de proposições (p, q), deve significar que p é verdadeiro ou que q é verdadeiro, mas não ambos. Por exemplo, discute-se que a intenção normal de uma declaração como "Você pode tomar café ou chá" é para estipular que exatamente uma das condicões pode ser verdadeira. Certamente em muitas circunstâncias, uma sentença como a desse exemplo deveria ser entendida como a proibição da possibilidade de alguém aceitar as duas opiniões. Mesmo assim, existe uma boa razão para supor que esse tipo de sentença não é disjuntiva. Se nós sabemos tudo sobre uma disjunção e ela é verdadeira, não podemos ter certeza de qual das proposições são verdadeiras. Por exemplo, se uma mulher soube que o amigo dela está ou na lanchonete ou na quadra de tenis, ela não pode validamente inferir que ele está na quadra de tenis. Mas se o garçom dela lhe diz que ela pode pedir café ou chá, ela pode validamente inferir que ela pode tomar chá. Nada classificadamente pensado como de uma disjunção tem essa propriedade. É tão óbvio que ela pode razoavelmente entender como se o garçom dela tivesse lhe negado a possibilidade de tomar ambos café e chá.

Há ainda duas boas razões gerais para supor que palavra nenhuma em qualquer linguagem natural poderia adequadamente ser representada pelo exclusivo binário "ou" da lógica formal. Primeiro, o "ou" exclusivo n-ário é verdadeiro se e somente se este tenha um número ímpar de entradas verdadeiras. Mas parece que ainda que nenhuma palavra em alguma linguagem natural que possa juntar-se a uma lista de duas ou mais opções tem essa propriedade geral. Segundo, como apontado pela Barrett e Stenner em um artigo de 1971 "O Mito do 'Ou' exlusivo" (Mind, 80 (317), 116-121), nenhum autor produziu um exemplo de uma sentença na língua inglesa que parece ser falsa porque ambas de suas entradas são verdadeiras. Certamente há muitas sentenças como "A lâmpada está ligada ou desligada", na qual é óbvio que ambas disjunções não podem ser verdadeiras. Mas não é óbvio que isso se deve a natureza da palavra "ou" ao invés de fatos particulares sobre o mundo.

Propriedades[editar | editar código-fonte]

Esta seção usa os seguintes símbolos:

\begin{matrix}
0         & = & \mbox{falso}     \\
1         & = & \mbox{verdadeiro}      \\
\lnot p   & = & \mbox{not}\ p    \\
p \oplus q     & = & p\ \mbox{xor}\ q \\
p \land q & = & p\ \mbox{and}\ q \\
p \lor  q & = & p\ \mbox{or} \ q
\end{matrix}

As seguintes equações seguem dos axiomas lógicos:

\begin{matrix}
p \oplus 0       & = & p       \\
p \oplus 1       & = & \lnot p \\
p \oplus p       & = & 0       \\
p \oplus \lnot p & = & 1       \\
\\
p \oplus q         & = & q \oplus p              \\
p \oplus q \oplus p     & = & q                  \\
p \oplus (q \oplus r)   & = & (p \oplus q) \oplus r        \\
p \oplus q         & = & \lnot p \oplus \lnot q  \\
\lnot (p \oplus q) & = & \lnot p \oplus q        & = & p \oplus \lnot q \\
\\
p \oplus (\lnot p \land q)      & = & p \lor  q       \\
p \oplus (p \land \lnot q)      & = & p \land q       \\
p \oplus (p \lor q)             & = & \lnot p \land q \\
\lnot p \oplus (p \lor \lnot q) & = & p \lor q        \\
p \land (p \oplus \lnot q)      & = & p \land q       \\
p \lor (p \oplus q)             & = & p \lor q
\end{matrix}

Associatividade e Comutatividade[editar | editar código-fonte]

A "Ou Exclusivo" (XOR) goza das propriedades da associatividade e comutatividade. Vide o exemplo:

\begin{matrix}
p \oplus q & = & q \oplus p \\
\\
(p \oplus q) \oplus r & = & p \oplus (q \oplus r) & = & p \oplus q \oplus r
\end{matrix}

Ou exclusivo na ciência da computação[editar | editar código-fonte]

Operação Bitwise[editar | editar código-fonte]

Bitwise XOR é simplesmente uma operação XOR "bit a bit" sobre dois valores binários que indica "1", se e somente se um dos bits possuír valor lógico "1", e "0", se dois ou mais bits possuírem "1" como valor lógico, ou ainda se todos os bits possuírem "0" como valor lógico.

Na ciência da computação, a disjunção exclusiva tem vários usos, tais quais:

  • dizer quando dois bits são diferentes.
  • ele é um circuito negador. ex: 1 0 0 1 xor 1 1 1 1 equivale a 0 1 1 0
  • dizer se existe um número ímpar de bits 1s (A \oplus B \oplus C \oplus D \oplus E) é verdadeiro se um número ímpar de variáveis são verdadeiras).

Em circuitos lógicos, um somador pode ser implementado usando uma porta XOR para somar os números, e uma série de AND's, OR's e Not's para os carry's ("vai um") de saída.

Em algumas arquiteturas de computadores, é mais eficiente armazenar um zero em um registrador realizando a operação XOR com ele mesmo, ao invés de carregar e armazenar o valor zero.

O XOR também é usado para misturar funções na criptografia, como por exemplo no One-time Pad.

O XOR também tem sua utilidade na segurança da informação armazenada em discos rígidos. A técnica RAID 3-6 usa o conceito lógico do operador XOR para em caso de falha em um dos discos, os dados sejam reconstituídos aplicando XOR ao dado armazenado no disco de backup. Pode-se dizer que o XOR realiza uma operação reversível, pois se aplicarmos A \oplus B e reaplicarmos o XOR no resultado com o mesmo B, teremos A, como vemos a seguir:

 ( A \oplus B ) \oplus B \equiv A

E é baseado na reversibilidade da operação XOR que a técnica recupera os dados armazenados no disco de backup.

O algoritmo Xor Swap usa a lógica do conectivo XOR a fim de trocar os valores numéricos de 2 variáveis.

Descrição do hardware[editar | editar código-fonte]

As portas XOR são portas lógicas básicas que são reconhecidas na TTL e nos circuitos integrados CMOS.
Existem Circuitos Integrados que utilizam a lógica do XOR, sendo que esta mesma lógica pode ser expressa através dos circuitos NAND, NOR e NOT.

Abaixo temos um exemplo de um Circuito Integrado XOR, de duas entradas.
S = \overline{A}\cdot B + A \cdot \overline{B}

Diagrama de pinos de um circuito integrado CMOS 4070
 1  Entrada A1
 2  Entrada B1
 3  Saída Q1
 4  Saída Q2
 5  Entrada B2
 6  Entrada A2
 7  VSS
 8  Entrada A3
 9  Entrada B3
 10 Saída Q3
 11 Saída Q4
 12 Entrada B4
 13 Entrada A4
 14 VDD

Ver também[editar | editar código-fonte]