EnzoFerber
(usa FreeBSD)
Enviado em 11/04/2017 - 08:27h
robgeek escreveu:
Boa noite!
Estou estudando sobre operadores binários e vi que o XOR tem uma propriedade interessante. Ele é reversível, ou seja, se A^B=C então C^B=A ou C^A=B. Vi que o mesmo acontece com XAND.
Queria saber se outras propriedades interessantes como essa em outras operações binárias, como OR, AND...
Olá,
Realmente é uma propriedade interessante. Tão interessante que existe uma implementação de listas encadeadas usando-a:
https://en.wikipedia.org/wiki/XOR_linked_list .
Já o XAND, também conhecido como XNOR é a negação do XOR, portanto, você consegue a mesma proriedade, só que invertida.
https://en.wikipedia.org/wiki/XNOR_gate
Sei que as portas NAND e NOR são funcionalmente completas. O que isso significa é que você pode construir *qualquer* porta lógica a partir de uma combinação dessas portas. Você pode ler mais sobre completude funcional aqui:
https://en.wikipedia.org/wiki/Functional_completeness .
Falando um pouco mais rebuscado, um conjunto de operações lógicas é dito funcionalmente completo se, e somente se, através de uma combinação dos elementos do conjunto você consegue expressar todas as tabelas-verdades possíveis. O conjunto A = {AND, NOT} é funcionalmente completo, assim como os conjuntos B = {NAND} e C = {NOR}. Você consegue construir uma CPU completa usando apenas portas NAND, ou apenas portas NOR. Tem inclusive um curso muito interessante chamado "From NAND to Tetris", vale a pena conferir:
http://www.nand2tetris.org/
Quanto aos outros operadores, podem ser usados para testar validades de argumentos. Mas aí você precisa estudar lógica formal:
http://maude.sip.ucm.es/~miguelpt/papers/flogic.pdf
Já "propriedades" interessantes, são várias. Você pode ler Hacker's Delight - vai achar muita coisa legal:
https://www.amazon.com/Hackers-Delight-2nd-Henry-Warren/dp/0321842685
Enzo Ferber
[]'s
$ indent -kr -i8 src.c
"(...)all right-thinking people know that (a) K&R are _right_ and (b) K&R are right."
- linux/Documentation/CodingStyle - TORVALDS, Linus.