Home > Tecnologia > Informática > Arquitectura de Computadores > Operações lógicas ou booleanas

Operações lógicas ou booleanas

Parte II – Sistemas lógicos

Operações lógicas ou booleanas

Operações lógicas ou booleanas

Introdução

A expressão “booleana” ou “booleano” é uma tradução directa do Inglês “boolean”, nome que surgiu de George Boole, que foi o primeiro a introduzir um sistema algébrico lógico no século XIX.

Para começar, vamos definir as chamadas “tabelas da verdade” e em condições de verdadeiro ou falso, muito usadas na matemática, em equações e inequações, e intervalos válidos para expressões. Não vamos aprofundar esta questão, estudada em matemática, e vamos directamente à sua aplicação na informática. Porém, analisemos as operações mais usuais – “E”, “OU”, “OU-exclusivo” e negação – com as letras V e F a representarem Verdade e Falso, respectivamente.

"E"FV
FFF
VFV
"OU"FV
FFV
VVV
"OUx"FV
FFV
VVF
"NEG"-
FV
VF

Ou seja, podemos exprimir estas tabelas como:

  • Verdade E Verdade = Verdade
  • Verdade E Falso = Falso
  • Falso E Verdade = Falso
  • Falso E Falso = Falso
  • Verdade OU Verdade = Verdade
  • Verdade OU Falso = Verdade
  • Falso OU Verdade = Verdade
  • Falso OU Falso = Falso
  • Verdade OU-exclusivo (OUx) Verdade = Falso
  • Verdade OUx Falso = Verdade
  • Falso OUx Verdade = Verdade
  • Falso OUx Falso = Falso
  • Negação de Verdade = Falso
  • Negação de Falso = Verdade

Usando agora, uma representação mais “informática”, usemos as palavras em Inglês:

  • “AND” para “E”
  • “OR” para “OU”
  • “XOR” (de eXclusive OR) para “OU-exclusivo”
  • “NOT” para a negação

E ainda, os bits 1 para Verdade e 0 para Falso.
As tabelas ficam com a forma:

AND01
000
101
OR01
001
111
XOR01
001
110
NOT-
01
10

Matematicamente, também podemos afirmar que estas operações, em termos de conjuntos, representam:

  • AND (E) – Intercepção ( símbolo ˄ )
  • OR (OU) – União ( símbolo ˅ )
  • NOT (Negação) – Exclusão ( símbolo ¬ )

Podemos também verificar uma equivalência interessante, em binário, com as operações AND e XOR e as operações aritméticas de multiplicar e somar. Vejamos:

AND e a multiplicação:

AND01
000
101
×01
000
101

Podemos afirmar que, ao nível de um bit, a multiplicação é equivalente à operação lógica AND.

E quanto ao XOR e a soma:

XOR01
001
110
+01
001
110

Lembre-se que 1 + 1 é 0 “e vai 1”! Podemos também afirmar que, ao nível de um bit, a soma é equivalente à operação lógica “XOR”.



Operações com mais do que um bit

Estas operações lógicas também podem ser efectuadas com um maior número de bits. Neste caso, fazemos a operação bit a bit. Nos exemplos, coluna a coluna.

Exemplos:

1101 AND 0111 = ?

1101
AND0111
0101

1101 AND 0111 = 0101

1110 OR 0110 = ?

1110
OR0110
1110

1110 OR 0110 = 1110

1011 XOR 0011 = ?

1011
XOR0011
1000

1011 XOR 0011 = 1000

Exemplo prático

Para terminar, vejamos um exemplo prático destes operadores.

Imagine-se que tem um registo de um controlador de 8 bits que controla o “ligar” ou “desligar” de determinados dispositivos. Imagine ainda que o bit 3 (lembre-se que da direita para a esquerda podemos ter os bits numerados de 0 a 7) controla o altifalante do PC e o bit 2 controla um 2º écran.

Considere-se ainda que temos o registo com os seguintes valores:

Bit76543210
Val.10110101

Temos o bit 3 (altifalante – a verde) a 0, ou seja, o altifalante está desligado, e o bit 2 (2º écran – a amarelo) a 1, ou seja, o 2º écran está ligado.

Pretende-se fazer uma operação de ligar ambos os dispositivos, independentemente se já estiverem ligados ou não. Para tal, usamos o operador “OR” em que 0 é o elemento neutro e 1 é o elemento “absorvente”:

10110101
OR00001100
10111101

Repare que, na primeira linha temos os bits do registo e na segunda linha os bits da operação. Repare ainda que todos os bits estão a 0, excepto os bits 3 e 2 que estão a 1. Assim, garantimos que, com um bit a 0, não alteramos o estado dos restantes bits do registo! Só queremos activar os bits 3 e 2, daí o esses bits da operação estarem a 1. De facto, ao observarmos a linha 3, que representa o novo estado do registo, apenas os bits 3 e 2 foram forçados a ficar a 1 e os restantes mantêm o mesmo valor!

Recuemos ao estado inicial do registo. Agora, o que se pretende, é forçar o desligar destes dispositivos, independentemente de já estarem desligados ou não. Neste caso, usamos o operador “AND” em que 1 é elemento neutro e 0 é o elemento “absorvente”:

10110110
AND11110011
10110010

Agora, repare-se que na segunda linha, os bits da operação estão todos a 1 e, os bits 3 e 2, que queremos desligar, estão a 0. Neste caso, garantimos que só estamos a desactivar os bits 3 e 2! Os restantes, mantém o mesmo valor!

Por fim, e voltando a tomar os valores iniciais do registo, considere-se que pretendemos “inverter” o estado dos dispositivos de ligado para desligado e vice-versa! Para este caso, usamos o operador “XOR” em que o 0 é elemento neutro e o 1 é o elemento “inversor”!

11010110
XOR00001100
11011010

Repare-se que, à semelhança do operador “OR”, os bits a 0 da operação mantém os respectivos bits do registo iguais. Por outro lado, ao ter os bits 3 e 2, da operação, a 1, estamos a inverter os seus valores. Assim, o altifalante, que estava desligado, passa a estar ligado e o 2º écran, que estava ligado, passa a estar desligado!



O caso do 2º écran é um pouco “forçado”. Mas, na realidade, existe um controlador em que um dos bits liga ou desliga o altifalante do PC (PIT – Programmable Interval Timer), pelo que estas operações podem acontecer algumas vezes. No passado, quando não haviam placas de som, as melodias eram controladas por um registo que definia a frequência do som do altifalante e ligava-se ou desligava-se o bit 1 do PIT que controlava o altifalante. (Que na realidade era um porto de Input/Output desse controlador, mas tal ficará para falarmos mais tarde).

Em todos estes casos, os bits usados nas operações são, por vezes, denominados de máscaras.

Este tema será abordado com maior detalhe num tópico futuro de circuitos lógicos…

Próximo artigo

Este artigo foi escrito com a antiga grafia.

About Carlos Santos

Frequência em mestrado de Engenharia Electrotécnica e de Computadores. Programador freelancer: Websites, Aplicações Web (JAVA e PHP), J2SE/J2EE, C/C++ e Android. Explicador e formador em informática, matemática e electrotecnia. Formação presencial ou remota através de Skype e Team Viewer. Interesses: Música, áudio, vídeo, ciência, astronomia e mitologia.

Leave a Reply

Your email address will not be published and it is optional.