Logica Binaria: mudanças entre as edições
(29 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
=Lógica Binária | =Lógica Binária= | ||
A '''lógica binária''' é a base de todo o processamento computacional. | A '''lógica binária''' é a base de todo o processamento computacional. | ||
Na verdade, são estas operações mais básicas que constituem todo o poderio dos computadores. | Na verdade, são estas operações mais básicas que constituem todo o poderio dos computadores. | ||
Qualquer operação, por mais complexa que pareça, é traduzida internamente pelo processador para '''operações lógicas''', realizadas por meio de '''portas lógicas'''. | Qualquer operação, por mais complexa que pareça, é traduzida internamente pelo processador para '''operações lógicas''', realizadas por meio de '''portas lógicas''' <ref name="TOCCI">TOCCI, R.J.; WIDMER, N.S.; MOSS, G.L. Sistemas Digitais: princípios e aplicações, São Paulo: Pearson, 2011.</ref>. | ||
==Representação elétrica dos bits 0 e 1== | ==Representação elétrica dos bits 0 e 1== | ||
Linha 16: | Linha 16: | ||
== Portas Lógicas == | == Portas Lógicas == | ||
As '''portas lógicas''' implementam os operadores da '''lógica binária''' e são os principais componentes da eletrônica digital. | As '''portas lógicas''' implementam os operadores da '''lógica binária''' e são os principais componentes da eletrônica digital. | ||
===Porta NÃO (NOT)=== | ===Porta NÃO (NOT)=== | ||
Linha 35: | Linha 33: | ||
Expressão booleana: | Expressão booleana: | ||
S = | S = ~A | ||
===Porta E (AND)=== | ===Porta E (AND)=== | ||
Linha 81: | Linha 79: | ||
S = A + B | S = A + B | ||
===Portas Não E (NAND | ===Portas Não E (NAND)=== | ||
Corresponde ao operador E seguido por uma negação. | |||
{| border=1 | |||
|- | |||
S = | | '''A''' || '''B''' || '''S''' | ||
|- | |||
S = | | 0 || 0 || 1 | ||
|- | |||
| 0 || 1 || 1 | |||
|- | |||
| 1 || 0 || 1 | |||
|- | |||
| 1 || 1 || 0 | |||
|- | |||
|} | |||
S = ~(A . B) | |||
===Não OU (NOR)=== | |||
Corresponde ao operador OU seguido por uma negação. | |||
{| border=1 | |||
|- | |||
| '''A''' || '''B''' || '''S''' | |||
|- | |||
| 0 || 0 || 1 | |||
|- | |||
| 0 || 1 || 0 | |||
|- | |||
| 1 || 0 || 0 | |||
|- | |||
| 1 || 1 || 0 | |||
|- | |||
|} | |||
S = ~(A + B) | |||
===Porta OU-EXCLUSIVO (XOR)=== | ===Porta OU-EXCLUSIVO (XOR)=== | ||
Linha 110: | Linha 133: | ||
|} | |} | ||
Expressão booleana: | |||
S = A ⊕ B <!-- CTRL SCHIFT U 2295 --> | |||
<!-- | |||
;Exercícios | ;Exercícios | ||
#Determine a saída da porta OU considerando que as entradas A e B variam de acordo com o diagrama de tempo mostrado. | #Determine a saída da porta OU considerando que as entradas A e B variam de acordo com o diagrama de tempo mostrado. | ||
#*[[Arquivo:DiagramaTempo.png]][[Arquivo:PortaOU.png]] | #*[[Arquivo:DiagramaTempo.png]][[Arquivo:PortaOU.png]] | ||
#Determine a saída da porta E considerando que as entradas A e B variam de acordo com o diagrama de tempo mostrado. | #Determine a saída da porta E considerando que as entradas A e B variam de acordo com o diagrama de tempo mostrado. | ||
#*[[Arquivo:DiagramaTempo.png]][[Arquivo:PortaE.png]] | #*[[Arquivo:DiagramaTempo.png]][[Arquivo:PortaE.png]]--> | ||
===Descrevendo circuitos lógicos algebricamente=== | ===Descrevendo circuitos lógicos algebricamente=== | ||
Linha 120: | Linha 146: | ||
Qualquer circuito lógico pode ser descrito usando os três operadores lógicos fundamentais: '''E''', '''OU''' e '''NÃO'''. | Qualquer circuito lógico pode ser descrito usando os três operadores lógicos fundamentais: '''E''', '''OU''' e '''NÃO'''. | ||
;Exemplo: Circuito construído a partir da expressão lógica: | |||
S = (A + B).(~B + C) | |||
;Exemplo | |||
Circuito construído a partir da expressão lógica: | |||
S = (A + B).( | |||
[[Arquivo:ExpressaoBooleana.png]] | [[Arquivo:ExpressaoBooleana.png]] | ||
Note que: | Note que: | ||
*As expressões (A + B) e ( | *As expressões (A + B) e (~B + C) são entradas de uma porta E; | ||
*A expressão A + B é gerada por portas OU; | *A expressão A + B é gerada por portas OU; | ||
*A expressão | *A expressão ~B + C também é gerada por portas OU, com um inversor na entrada B. | ||
;Tabela Verdade: O funcionamento de um circuito lógico é determinado através de sua '''tabela verdade'''. | |||
:Vejamos como construir a tabela verdade para o circuito S = (A + B).(~B + C). | |||
==Operadores Booleanos nas Linguagens de Progamação== | |||
===Álgebra de Boole | As '''portas lógicas''' ('''E''', '''OU''' e '''NÃO''') também são implementadas como '''operadores booleanos''' em linguagens de programação. | ||
Por exemplo, na '''Linguagem C''', temos os operadores: | |||
* '''!''' (não lógico); | |||
*'''&&''' (e lógico); | |||
*'''||''' (ou lógico). | |||
===Exemplos de códigos=== | |||
;Não lógico: Este operador pode ser utilizado dentro de uma condição SE: | |||
if (!x) { // se x não é verdadeiro | |||
// faça | |||
} | |||
:Também pode ser utilizado para inverter um valor booleano. | |||
x = !y; // inverte o valor de y armazenado em x | |||
;E lógico: O operador E também pode ser utilizado dentro de uma condição SE: | |||
if (a == 10 && b == 10) { // se ambas variáveis forem iguais a 10 | |||
// faça | |||
} | |||
;OU lógico: O operador OU também pode ser utilizado dentro de uma condição SE: | |||
if (a > 0 || b > 0) { // se uma ou outra variável for maior que 0 | |||
// faça | |||
} | |||
==Laboratório e Exercícios de Simulação== | |||
Para este laboratório será utilizado o '''Simulador de Circuitos Lógicos - Logisim''', o qual permite o projeto e a simulação de circuitos lógicos através de uma interface gráfica. | |||
O ''download'' do '''Logisim''' pode ser obtido no endereço: [http://sourceforge.net/projects/circuit/ http://sourceforge.net/projects/circuit/] | |||
===Circuitos com portas lógicas=== | |||
Construir, simular e determinar a '''tabela verdade''' dos circuitos representados pelas '''expressões lógicas''' abaixo: | |||
#S = (A + B).(~B + C) | |||
#S = A.C + ~(B.C) + ~A.B.C | |||
#S = A.B + ~C + ~(C.D) | |||
#Z = X.(~Y + W) | |||
#Construir e simular o circuito da figura abaixo e comparar seu funcionamento com a porta '''Ou-Exclusivo''': [[Arquivo:OuExclusivo.png | 300px]] | |||
==Álgebra de Boole== | |||
;Teoremas Booleanos | ;Teoremas Booleanos | ||
Linha 143: | Linha 210: | ||
#A . 1 = A | #A . 1 = A | ||
#A . A = A | #A . A = A | ||
#A . | #A . ~A = 0 | ||
#A + 0 = A | #A + 0 = A | ||
#A + 1 = 1 | #A + 1 = 1 | ||
#A + A = A | #A + A = A | ||
#A + | #A + ~A = 1 | ||
;Teoremas de DeMorgan: | |||
#~(A + B) = ~A . ~B | |||
#~(A . B) = ~A + ~B | |||
[[Arquivo:TeoremasMorgan.png]] | [[Arquivo:TeoremasMorgan.png]] | ||
; | ;Exercício: Construir e simular circuitos para comprovar experimentalmente os Teoremas de DeMorgan: | ||
#~(A + B) = ~A . ~B | |||
#~(A . B) = ~A + ~B | |||
# | |||
# | |||
==Referências== | ==Referências== | ||
Linha 176: | Linha 230: | ||
---- | ---- | ||
[[Usuário:Evandro.cantu|Evandro.cantu]] ([[Usuário Discussão:Evandro.cantu|discussão]]) 11h21min de 13 de maio de 2021 (-03) | |||
---- | ---- | ||
[[Categoria:Sistemas Digitais]] | [[Categoria:Sistemas Digitais]] |
Edição atual tal como às 18h40min de 22 de maio de 2023
Lógica Binária
A lógica binária é a base de todo o processamento computacional. Na verdade, são estas operações mais básicas que constituem todo o poderio dos computadores. Qualquer operação, por mais complexa que pareça, é traduzida internamente pelo processador para operações lógicas, realizadas por meio de portas lógicas [1].
Representação elétrica dos bits 0 e 1
Uma forma típica de representar os bits 0 e 1 nos sistemas eletrônicos a através de níveis de tensão elétrica.
Nos circuitos integrados (CI) TTL (transistor transistor logic) utiliza-se os seguintes níveis de tensão:
- 0V (nível BAIXO) para representar o 0;
- 5V (nível ALTO) para representar 1.
Outras tecnologias de CI, como a CMOS, utilizam outros níveis de tensão.
Portas Lógicas
As portas lógicas implementam os operadores da lógica binária e são os principais componentes da eletrônica digital.
Porta NÃO (NOT)
Implementa o operador NÃO (NOT), ou negação binária, resulta no complemento do operando, ou seja, será um bit 1 se o operando for 0, e será 0 caso contrário, conforme podemos confirmar pela tabela verdade, onde A é o bit de entrada e S é o bit de saída (out):
A | S |
0 | 1 |
1 | 0 |
Expressão booleana:
S = ~A
Porta E (AND)
Implementa o operador E (AND), ou conjunção binária, devolve um bit 1 sempre que ambos operandos sejam 1, conforme podemos confirmar pela tabela verdade, onde A e B são bits de entrada e S é o bit de saída (out):
A | B | S |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Expressão booleana:
S = A . B
Porta OU (OR)
Implementa o operador OU (OR), ou disjunção binária, devolve um bit 1 sempre que pelo menos um dos operandos seja 1, conforme podemos confirmar pela tabela verdade, onde A e B são bits de entrada e S é o bit de saída (out):
A | B | S |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Expressão booleana:
S = A + B
Portas Não E (NAND)
Corresponde ao operador E seguido por uma negação.
A | B | S |
0 | 0 | 1 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
S = ~(A . B)
Não OU (NOR)
Corresponde ao operador OU seguido por uma negação.
A | B | S |
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 0 |
S = ~(A + B)
Porta OU-EXCLUSIVO (XOR)
Implementa o operador OU-EXCLUSIVO (XOR), ou disjunção binária exclusiva, devolve um bit 1 sempre que o número de operandos iguais a 1 é ímpar, conforme podemos confirmar pela tabela verdade, onde A e B são bits de entrada e S é o bit de saída (out):
A | B | S |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Expressão booleana:
S = A ⊕ B
Descrevendo circuitos lógicos algebricamente
Qualquer circuito lógico pode ser descrito usando os três operadores lógicos fundamentais: E, OU e NÃO.
- Exemplo
- Circuito construído a partir da expressão lógica:
S = (A + B).(~B + C)
Note que:
- As expressões (A + B) e (~B + C) são entradas de uma porta E;
- A expressão A + B é gerada por portas OU;
- A expressão ~B + C também é gerada por portas OU, com um inversor na entrada B.
- Tabela Verdade
- O funcionamento de um circuito lógico é determinado através de sua tabela verdade.
- Vejamos como construir a tabela verdade para o circuito S = (A + B).(~B + C).
Operadores Booleanos nas Linguagens de Progamação
As portas lógicas (E, OU e NÃO) também são implementadas como operadores booleanos em linguagens de programação.
Por exemplo, na Linguagem C, temos os operadores:
- ! (não lógico);
- && (e lógico);
- || (ou lógico).
Exemplos de códigos
- Não lógico
- Este operador pode ser utilizado dentro de uma condição SE:
if (!x) { // se x não é verdadeiro // faça }
- Também pode ser utilizado para inverter um valor booleano.
x = !y; // inverte o valor de y armazenado em x
- E lógico
- O operador E também pode ser utilizado dentro de uma condição SE:
if (a == 10 && b == 10) { // se ambas variáveis forem iguais a 10 // faça }
- OU lógico
- O operador OU também pode ser utilizado dentro de uma condição SE:
if (a > 0 || b > 0) { // se uma ou outra variável for maior que 0 // faça }
Laboratório e Exercícios de Simulação
Para este laboratório será utilizado o Simulador de Circuitos Lógicos - Logisim, o qual permite o projeto e a simulação de circuitos lógicos através de uma interface gráfica.
O download do Logisim pode ser obtido no endereço: http://sourceforge.net/projects/circuit/
Circuitos com portas lógicas
Construir, simular e determinar a tabela verdade dos circuitos representados pelas expressões lógicas abaixo:
- S = (A + B).(~B + C)
- S = A.C + ~(B.C) + ~A.B.C
- S = A.B + ~C + ~(C.D)
- Z = X.(~Y + W)
- Construir e simular o circuito da figura abaixo e comparar seu funcionamento com a porta Ou-Exclusivo:
Álgebra de Boole
- Teoremas Booleanos
- A . 0 = 0
- A . 1 = A
- A . A = A
- A . ~A = 0
- A + 0 = A
- A + 1 = 1
- A + A = A
- A + ~A = 1
- Teoremas de DeMorgan
- ~(A + B) = ~A . ~B
- ~(A . B) = ~A + ~B
- Exercício
- Construir e simular circuitos para comprovar experimentalmente os Teoremas de DeMorgan:
- ~(A + B) = ~A . ~B
- ~(A . B) = ~A + ~B
Referências
- ↑ TOCCI, R.J.; WIDMER, N.S.; MOSS, G.L. Sistemas Digitais: princípios e aplicações, São Paulo: Pearson, 2011.
Evandro.cantu (discussão) 11h21min de 13 de maio de 2021 (-03)