6

Tabela-verdade e Portas Lógicas

Introdução6.1

Até aqui foram apresentados os conceitos básicos de circuitos e níveis lógicos, nos quais existem apenas duas condições possíveis: verdadeiro ou falso, representadas de forma natural pelo sistema binário (0 e 1). Para compreender o funcionamento desses circuitos, são necessários métodos que descrevam como as decisões lógicas são tomadas, tema abordado ao longo do capítulo.

A lógica booleana, criada por George Boole em 1854, utiliza símbolos para representar e simplificar expressões lógicas, permitindo descrever a relação entre entradas e saídas dos circuitos. Com ela, estudam-se as portas lógicas, base dos sistemas digitais, e realizam-se análises, projetos e simplificações de circuitos. Outras ferramentas, como tabelas-verdade, esquemas, diagramas de tempo e linguagens, complementam esse processo. O domínio dessas técnicas, aliado à prática constante, é essencial para o desenvolvimento de habilidade e confiança em sistemas digitais.

Constantes e Variáveis Booleanas6.2

A principal diferença da álgebra booleana e a convencional é que, na booleana, as constantes e variáveis podem ter apenas dois valores possíveis 1 ou 0, enquanto na convencional elas podem assumir qualquer valor numérico. Por conta dessa característica, a álgebra booleana é muito utilizada para representa por nível de tensão presente em uma conexão ou em em terminais de entrada/saída de um circuito.

Nesse contexto as variáveis booleanas (0 ou 1) não representam efetivamente números, mas o estado do nível de tensão (baixo ou alto, respectivamente). As entradas em circuitos booleanos são na verdade, variáveis lógicas cujos níveis determinam a qualquer momento os níveis da(s) saída(s). Ou seja, para uma determinado circuito, teremos as entradas, por exemplo, $A$ e $B$ e queremos encontrar uma equação da álgebra booleana que nos determina a saída dependendo de como colocamos as entradas, uma vez que elas podem, e certamente irão mudar.

Pense no exemplo de um sistema de controle de acesso em que a entrada $A$ indica se a campainha foi acionada e a variável $B$ indica se a pessoa possui cadastro facial. A entrada só é permitida quando ambas as condições forem verdadeiras, de modo que a saída é dada por $S = A \text{ E } B$. Como cada pessoa pode ou não acionar a campainha e pode ou não estar cadastrada, os valores de $A$ e $B$ variam, mas a regra lógica permanece a mesma: apenas quando as duas entradas são verdadeiras a saída permite o acesso. Esse raciocínio é análogo às equações da álgebra tradicional, porém limitado a dois valores possíveis, 1 ou 0, que representam verdadeiro ou falso na lógica proposicional.

Justamente por trabalhar apenas com dois valores, a álgebra booleana é mais simples que a álgebra convencional, não envolvendo frações, números negativos ou operações complexas. Ela se baseia em três operações fundamentais, OR (OU), AND (E) e NOT (NÃO), chamadas de operações lógicas. Essas operações são implementadas fisicamente por circuitos digitais conhecidos como portas lógicas, construídas a partir de componentes eletrônicos. A álgebra booleana é utilizada tanto para descrever e analisar essas portas básicas quanto para projetar e estudar circuitos lógicos combinacionais mais complexos.

Tabela-Verdade6.3

Utilizamos a tabela-verdade como uma forma organizada de descrever como a saída de um circuito lógico depende dos níveis lógicos aplicados às suas entradas. Nela, relacionamos todas as combinações possíveis das entradas com o nível lógico correspondente da saída, o que permite compreender claramente o comportamento do circuito em cada situação.

Em uma tabela com duas entradas, analisamos todas as combinações possíveis entre $A$ e $B$ e observamos qual será o valor da saída $x$ em cada caso. Por exemplo, podem existir situações em que ambas as entradas estão em nível 0 e a saída assume nível 1, ou casos em que apenas uma das entradas está em nível 1 e a saída muda de estado. Dessa forma, torna-se possível visualizar como o circuito reage a cada condição de entrada.

Esse mesmo raciocínio se estende a circuitos com três ou quatro entradas. À medida que o número de entradas aumenta, cresce também o número de combinações possíveis, mas a ideia permanece a mesma: no lado esquerdo da tabela colocamos todas as combinações dos níveis lógicos de entrada e, no lado direito, registramos o nível lógico resultante da saída, que depende exclusivamente do tipo de circuito lógico analisado.

Exemplos de tabelas-verdade para circuitos de (a) duas, (b) três e (c) quatro entradas.

De modo geral, uma tabela-verdade com $N$ entradas possui $2^N$ combinações possíveis, organizadas como uma contagem binária. Essa organização facilita o preenchimento da tabela e garante que nenhuma combinação de entrada seja esquecida, tornando a tabela-verdade uma ferramenta essencial para a análise de circuitos lógicos.


Problema: Considere um circuito lógico com duas entradas, $A$ e $B$, e uma saída $x$. A saída assume nível lógico 1 apenas quando exatamente uma das entradas está em nível 1. Nos demais casos, a saída é 0.

a) Escreva a tabela-verdade para o circuito.

$$ \begin{array}{c|c||c} A & B & x \\ \hline 0 & 0 & 0 \\ 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\ \end{array} $$

b) Explique, com base na tabela-verdade, como o circuito se comporta quando as entradas possuem o mesmo nível lógico.

Quando as entradas possuem o mesmo nível lógico (ambas $0$ ou ambas $1$), a saída do circuito é $0$. A saída assume valor $1$ apenas quando exatamente uma das entradas está em nível lógico $1$, caracterizando o comportamento de uma porta lógica do tipo $XOR$ (OU exclusivo).


Problema: Uma tabela-verdade com $8$ variáveis de entrada possui quantas linhas?

Uma tabela-verdade com $N$ variáveis possui $2^N$ linhas. Assim, para $N = 8$:

$$\boxed{2^8 = 256}$$

Portanto, a tabela-verdade possui 256 linhas.

Operações booleanas6.4

Operação OR ('OU')6.4.1

Para compreendermos como circuitos complexos e compiladores tomam decisões, precisamos retornar às bases da álgebra booleana. A operação OR é o primeiro dos três pilares fundamentais (junto ao AND e NOT) que utilizaremos para descrever o comportamento lógico de qualquer sistema digital.

Para visualizar essa lógica na prática, pense no funcionamento de uma lâmpada interna de um forno de cozinha. O objetivo é simples: a lâmpada deve acender se o usuário desejar ver a comida ou se for necessário por segurança ao abrir a porta. Podemos modelar esse sistema usando variáveis booleanas:

  • Entrada A: O interruptor manual está acionado? (0 para Não, 1 para Sim)
  • Entrada B: A porta do forno está aberta? (0 para Não, 1 para Sim)
  • Saída x: A lâmpada está acesa? (0 para Apagada, 1 para Acesa)

Nesse cenário, a lâmpada ($x$) será ativada se $A$ OU $B$ forem verdadeiros. Diferente da aritmética tradicional, na álgebra booleana o símbolo de adição ($+$) representa a operação lógica OR. Portanto, a expressão matemática que define esse comportamento é: $$ x = A + B $$

Na álgebra booleana, não estamos somando quantidades, mas sim combinando estados lógicos. Diferente da aritmética decimal, onde $1+1=2$, a lógica booleana opera em um sistema de saturação de sinal. Como o valor máximo permitido é 1 (Nível Alto), qualquer combinação de sinais verdadeiros resultará em verdadeiro.

Regra de Ouro Na lógica OR, a operação produz:

$$1 + 1 = 1$$ Isso ocorre porque, uma vez que o canal atinge o estado "Verdadeiro", a adição de mais fontes de sinal não altera seu estado final.

Esse princípio de saturação é escalável. Ao expandirmos o circuito para três entradas ($A$,$B$ e $C$), a expressão resultante é $x = A + B + C$. Se todas as entradas estiverem em nível lógico 1, o resultado permanece inalterado: $x = 1 + 1 + 1 = 1$.

Para facilitar a transição do pensamento lógico para a implementação, a leitura das expressões deve ser feita da seguinte forma:

  • $x = A + B$: Lê-se "x é igual a A OU B";
  • $x = A + B + C$: Lê-se "x é igual a A OU B OU C";

Em termos práticos, dizemos que a saída x será verdadeira (1) sempre que A for verdadeiro, OU B for verdadeiro, OU C for verdadeiro (ou qualquer combinação simultânea entre eles). Abaixo, a representação da operação OR para um sistema de duas variáveis de entrada e uma saída, demonstrando que a saída só é nula quando há ausência total de sinal em todas as entradas, ao lado da tabela vemos a representação da porta lógica.

$$ \begin{array}{cc||c} A & B & x = A + B + C \\ \hline 0 & 0 & 0 \\ 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 1 \\ \end{array} $$
2026-02-27T18:15:53.105165image/svg+xmlMatplotlib v3.10.8, https://matplotlib.org/xAB
$$ x = A + B $$

Reiterando, as entradas A e B são níveis lógicos de tensão, e a saída x é um nível lógico de tensão cujo valor é o resultado da operação OR entre A e B; ou seja, $x = A + B$. Em outras palavras, a porta OR opera de modo que sua saída será ALTA (nível lógico 1) se a entrada A ou B ou ambas forem nível lógico 1. A saída de uma porta OR será nível BAIXO (nível lógico 0) apenas se todas as entradas forem nível 0. Essa mesma ideia pode ser estendida para quando houver mais de duas entradas, veja abaixo um exemplo para três variáveis de entrada (A, B e C).

$$ \begin{array}{ccc||c} A & B & C & x = A + B + C \\ \hline 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 1 \\ 0 & 1 & 0 & 1 \\ 0 & 1 & 1 & 1 \\ 1 & 0 & 0 & 1 \\ 1 & 0 & 1 & 1 \\ 1 & 1 & 0 & 1 \\ 1 & 1 & 1 & 1 \end{array} $$
2026-02-27T18:15:53.118771image/svg+xmlMatplotlib v3.10.8, https://matplotlib.org/xABC
$$ x = A + B + C $$

Operação AND ('E')6.4.2

A operação AND é a segunda operação booleana básica. Para visualizar essa lógica na prática, considere o funcionamento de uma secadora de roupas que só opera se o temporizador estiver acima de zero AND (E) a porta estiver fechada. Podemos modelar esse sistema usando variáveis booleanas:

  • Entrada A: O temporizador está acima de zero? (0 para Não, 1 para Sim)
  • Entrada B: A porta está fechada? (0 para Não, 1 para Sim)
  • Saída x: Aquecedor e motor ligados? (0 para Desligado, 1 para Ligado)

Nesse cenário, a saída ($x$) só será ativada se $A$ E $B$ forem verdadeiros. Na álgebra booleana, o sinal ($\cdot$) representa a operação AND; embora equivalha à multiplicação convencional, ele indica uma relação lógica. A expressão matemática que define esse comportamento é: $$ x = A \cdot B \quad \text{ou} \quad x = AB $$

Nessa análise, a operação AND sobre variáveis booleanas funciona exatamente como a multiplicação de 0s e 1s. Se qualquer entrada for 0, o produto será 0. A saída só atinge o nível lógico 1 se todas as entradas forem simultaneamente 1.

Regra de Ouro Na lógica AND, a operação produz:

$$1 \cdot 1 = 1$$ Isso ocorre porque a saída será 1 somente quando todas as entradas forem 1; para todos os outros casos, a saída será 0.

Esse princípio de restrição é escalável. Ao expandirmos o circuito para três entradas ($A, B$ e $C$), a expressão resultante é $x = ABC$. Se todas as entradas estiverem em nível lógico 1, o resultado permanece 1. Caso contrário, teremos $x = 0$.

Para facilitar a transição do pensamento lógico para a implementação, a leitura das expressões deve ser feita da seguinte forma:

  • $x = AB$: Lê-se "x é igual a A E B";
  • $x = ABC$: Lê-se "x é igual a A E B E C";

Em termos práticos, dizemos que a saída x será verdadeira (1) somente quando A for verdadeiro, E B for verdadeiro, E C for verdadeiro. Abaixo, a representação da operação AND para duas variáveis de entrada, demonstrando a seletividade da saída, ao lado da tabela vemos a representação da porta lógica.

$$ \begin{array}{cc||c} A & B & x = AB \\ \hline 0 & 0 & 0 \\ 0 & 1 & 0 \\ 1 & 0 & 0 \\ 1 & 1 & 1 \\ \end{array} $$
2026-02-27T18:15:53.129248image/svg+xmlMatplotlib v3.10.8, https://matplotlib.org/xAB
$$ x = AB $$

As entradas A e B são níveis lógicos de tensão, e a saída x é o resultado do produto lógico entre elas. Observe que, no diagrama, a porta AND possui uma base reta, o que a diferencia visualmente da porta OR. Essa mesma lógica se estende para sistemas com mais entradas, como no exemplo abaixo para três variáveis (A, B e C).

$$ \begin{array}{ccc||c} A & B & C & x = ABC \\ \hline 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 1 & 1 & 0 \\ 1 & 0 & 0 & 0 \\ 1 & 0 & 1 & 0 \\ 1 & 1 & 0 & 0 \\ 1 & 1 & 1 & 1 \end{array} $$
2026-02-27T18:15:53.140518image/svg+xmlMatplotlib v3.10.8, https://matplotlib.org/xABC
$$ x = ABC $$

Para fechar a trindade lógica fundamental, aqui está a reestruturação da Operação NOT, seguindo rigorosamente a disposição visual e o padrão de texto que você estabeleceu para as operações OR e AND.

Operação NOT ('NÃO')6.4.3

A operação NOT, também conhecida como Inversão ou Complemento, diferencia-se das operações OR e AND por um detalhe fundamental: ela é uma operação unária, ou seja, é realizada sobre uma única variável de entrada. Sua função é atuar como um inversor de estado, transformando um nível lógico em seu oposto absoluto.

Para visualizar essa lógica na prática, considere um circuito de aviso para um botão de pressão. Muitas vezes, o sistema precisa disparar um sinal justamente quando o botão não está sendo pressionado (como uma trava de segurança que deve estar ativa enquanto o operador não interage com a máquina). Podemos modelar esse sistema usando variáveis booleanas:

  • Entrada A: O botão está sendo pressionado? (0 para Não, 1 para Sim)
  • Saída x: Estado de "Não pressionado"? (0 para Falso, 1 para Verdadeiro)

Nesse cenário, a saída ($x$) será o inverso da entrada $A$. Na álgebra booleana, representamos essa operação através de uma barra sobre o nome da variável ($\bar{A}$) ou, ocasionalmente, por um apóstrofo ($A'$). A expressão matemática que define esse comportamento é: $$ x = \bar{A} \quad \text{ou} \quad x = A' $$

Dizer que $x = \bar{A}$ significa que $x$ é o complemento de $A$. Se o valor de entrada é 0, o resultado é 1; se a entrada é 1, o resultado é 0.

Regra de Ouro Na lógica NOT, a operação produz:

$$\bar{0} = 1 \quad \text{e} \quad \bar{1} = 0$$ Isso ocorre porque o inversor sempre fornece em sua saída o nível lógico oposto ao que foi aplicado em sua entrada.

Diferente das operações anteriores, a operação NOT não é "escalável" no sentido de adicionar mais entradas a uma mesma porta; cada inversão requer seu próprio circuito dedicado. Para facilitar a leitura, a expressão $x = \bar{A}$ é lida como "x é igual a A negado" ou "x é o inverso de A".

Abaixo, observamos a representação da operação NOT, demonstrando sua tabela-verdade simplificada ao lado do símbolo da porta lógica (Inversor). Note que a presença do pequeno círculo no símbolo é o que denota formalmente a inversão.

$$ \begin{array}{c||c} A & x = \bar{A} \\ \hline 0 & 1 \\ 1 & 0 \end{array} $$

2026-02-27T18:15:53.151673image/svg+xmlMatplotlib v3.10.8, https://matplotlib.org/xA
$$ x = \bar{A} $$

Um detalhe importante para a análise de circuitos complexos é o efeito de forma de onda: o inversor complementa o sinal em todos os pontos. Se o sinal de entrada for uma sequência de pulsos, a saída será exatamente o "espelho" desses pulsos. Essa característica é essencial para converter lógicas "Ativas em Alto" para "Ativas em Baixo" conforme a necessidade do hardware.

Resumo das Operações Booleanas6.4.4

OperaçãoExpressãoRegra Fundamental
OR$x = A + B$Saída 1 se qualquer entrada for 1
AND$x = AB$Saída 1 somente se todas forem 1
NOT$x = \bar{A}$Saída é sempre o oposto da entrada

Questões6.5

  1. Com base na física dos circuitos digitais e na álgebra booleana, refute a ideia de que uma porta OR com 10 entradas em nível lógico 1 geraria uma saída "maior" que 1.

  2. Considere um componente digital cuja tabela-verdade completa ocupa 64 linhas.

  • a) Calcule o número exato de variáveis de entrada desse sistema.
  • b) Explique por que a tabela-verdade é considerada uma ferramenta inviável para analisar circuitos com grande número de entradas (ex: 32 bits).

  1. No circuito de iluminação do forno descrito no texto ($x = A + B$), suponha que a porta OR foi substituída fisicamente por uma porta AND. Descreva o impacto funcional para o usuário, indicando qual é a única combinação de entradas que fará a lâmpada acender nesse novo cenário.

  2. Ao aplicar um sinal de clock (pulsos alternados 0 e 1) na entrada de uma porta NOT, o que ocorre com a forma de onda na saída em relação à entrada? Desenhe a forma de onda para 3 ciclos de clock (3 sinais degrau) demonstrando a relação entrada/saída.

  3. Compare a tabela-verdade da porta OR convencional com a do problema resolvido (lógica XOR). Analise especificamente o caso onde as entradas são $A=1$ e $B=1$: explique por que a saída diverge entre as duas lógicas e qual o conceito que difere o "OU" booleano do "OU" exclusivo.

  4. Dada a expressão lógica de saída $S = (A + B) \cdot C$:

  • a) Descreva a condição lógica necessária para $S=1$ em linguagem natural.
  • b) O sistema será acionado se tivermos $A=1$ e $B=1$, mas $C=0$? Justifique sua resposta.

Próximos passos6.6

No próximo capítulo, Algebra para Circuitos, você começará a compreender como podemos transformar expressões booleanas para circuitos digitais, compreendendo, o grande benefício desse formato de expressão.