> For the complete documentation index, see [llms.txt](https://filipecf.gitbook.io/guia-de-projetos-em-microcontroladores-e-se/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://filipecf.gitbook.io/guia-de-projetos-em-microcontroladores-e-se/revisoes/revisao-de-logica-digital.md).

# Revisão de lógica digital

Circuitos digitais são circuitos que trabalham com lógica de dois níveis, que podem ser dois níveis de tensão, dois níveis de corrente, dois níveis de carga, etc. Para fins de simplificação, os níveis binários são abstraídos como *bits* (termos binários), e os circuitos digitais são representados como cadeias de operações com *bits.*

## Operações com *bits*

Um *bit* $$b$$ é uma variável que pertence a um conjunto booleano $$\mathbb{B}={0,1}$$. Os *bits* são processados por funções $$\mathbb{B}^n \mapsto \mathbb{B}^m$$ que chamamos de portas lógicas. As principais portas lógicas são *NOT*, *AND*, *OR* e *XOR*.

* *NOT*: $$b \mapsto \begin{cases}0, \quad b=1\1, \quad b=0\end{cases}$$ ou, em álgebra booleana, simplesmente $$b \mapsto \overline{b}$$.
* *AND*: $$(b\_1, b\_2) \mapsto b\_1b\_2$$
* *OR*: $$(b\_1, b\_2) \mapsto b\_1 + b\_2 -b\_1 b\_2$$ ou, em álgebra booleana, simplesmente$$(b\_1, b\_2) \mapsto b\_1 + b\_2$$.
* *XOR*: $$(b\_1, b\_2) \mapsto b\_1 \oplus b\_2$$

Os comportamentos das portas lógicas podem ser interpretados das seguintes formas:

* *NOT* - A saída é o *bit* de entrada invertido.
* *AND* - A saída só é 1 quando todas as entradas são 1.
* *OR* - A saída é 1 quando pelo menos uma entrada é 1.
* *XOR* - A saída é 0 quando os dois *bits* de entrada são iguais. &#x20;

### Tabela verdade

Tabela verdade é um quadro contendo todas as entradas e saídas de uma cadeia de operações com *bits*. A tabela verdade da operação *NOT*, por exemplo, é a seguinte:

| b | NOT b |
| - | ----- |
| 0 | 1     |
| 1 | 0     |

Já a tabela verdade das operações *AND*, *OR* e *XOR*, é a seguinte:

| b1 | b2 | b1 OR b2 | b1 AND b2 | b1 XOR b2 |
| -- | -- | -------- | --------- | --------- |
| 0  | 0  | 0        | 0         | 0         |
| 0  | 1  | 1        | 0         | 1         |
| 1  | 0  | 1        | 0         | 1         |
| 1  | 1  | 1        | 1         | 0         |

### Diagramas

Em diagramas de circuitos digitais, cada porta lógica é representada por um símbolo. Os símbolos das portas *NOT*, *AND*, *OR* e *XOR* são os seguintes:

<img src="/files/8MTPHBjvjgB3l2kwacAt" alt="Diagramas das portas lógicas" class="gitbook-drawing">

## Sistema numérico binário

Em contraste com o sistema decimal, que é o sistema numérico que estamos habituados a usar e que representa números como sequências de dígitos de 0 a 9, o sistema binário é o principal sistema numérico dos dispositivos digitais. No sistema binário, os números são representados por sequências de *bits*, os quais têm a vantagem de serem fáceis de processar usando componentes digitais.

Considere um número natural $$\boldsymbol{x} \in \mathbb{N}$$. No sistema binário, este número é representado por uma sequência de *bits* $$\[x\_n,...,x\_2,x\_1]$$ tal que:

$$
\boldsymbol{x} = \sum\_{i=1}^n x\_i 2^{i-1}
$$

No caso de, por exemplo, um *byte*, que é uma sequência de 8 *bits*, o valor natural do *byte* é definido como $$x\_1+2x\_2+4x\_3+8x\_4+16x\_5+32x\_6+64x\_7+128x\_8$$.

### Notação de complemento de 2

Para representar números inteiros no sistema binário, emprega-se a **notação de complemento de 2**, que define o valor $$\boldsymbol{x} \in \mathbb{Z}$$ da seguinte forma:

$$
\boldsymbol{x} = \begin{cases}
\sum\_{i=1}^{n} 2^{i-1} x\_i, \quad x\_{n} = 0 \\
-(1 + \sum\_{i=1}^{n} 2^{i-1} \overline{x\_i}), \quad x\_{n} = 1
\end{cases}
$$

Repare que, na notação de complemento de 2, o *bit* mais significativo $$x\_n$$determina se o número é positivo ou negativo. Esta é uma noção importante, pois o *bit* de sinal, que determina se $$\boldsymbol{x} \geq 0$$ ou $$\boldsymbol{x} < 0$$, é determinante na implementação de operações relacionais (como $$>, <, \neq$$ e $$=$$) através de lógica digital.&#x20;

## Leitura recomendada

* Artigo: [Entendendo os circuitos dos flip-flops](https://medium.com/@filipe.chagas/entendendo-os-circuitos-dos-flip-flops-6c6ee1d6bf47)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://filipecf.gitbook.io/guia-de-projetos-em-microcontroladores-e-se/revisoes/revisao-de-logica-digital.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
