Logica Binaria: mudanças entre as edições
(85 revisões intermediárias por 3 usuários não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
=Lógica Binária= | |||
A lógica binária é a base de todo o | 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''' <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== | |||
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)=== | |||
[[Arquivo:PortaNao.png]] | [[Arquivo:PortaNao.png]] | ||
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): | |||
{| border=1 | {| border=1 | ||
Linha 23: | Linha 31: | ||
|- | |- | ||
|} | |} | ||
Expressão booleana: | |||
S = ~A | |||
===Porta E (AND)=== | ===Porta E (AND)=== | ||
[[Arquivo:PortaE.png]] | |||
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): | |||
conforme podemos confirmar pela tabela verdade, onde A e B são bits de entrada e S é o bit de | |||
{| border=1 | {| border=1 | ||
Linha 42: | Linha 53: | ||
|- | |- | ||
|} | |} | ||
Expressão booleana: | |||
S = A . B | |||
===Porta OU (OR)=== | ===Porta OU (OR)=== | ||
[[Arquivo:PortaOU.png]] | |||
conforme podemos confirmar pela tabela verdade: | |||
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): | |||
{| border=1 | {| border=1 | ||
Linha 60: | Linha 75: | ||
|- | |- | ||
|} | |} | ||
Expressão booleana: | |||
S = A + B | |||
===Portas Não E (NAND)=== | |||
Corresponde ao operador E seguido por uma negação. | |||
{| border=1 | |||
|- | |||
| '''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. | |||
{| 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)=== | ||
[[Arquivo:PortaOuExclusivo.png]] | |||
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): | |||
{| border=1 | {| border=1 | ||
|- | |- | ||
Linha 79: | Linha 133: | ||
|} | |} | ||
Expressão booleana: | |||
S = A ⊕ B <!-- CTRL SCHIFT U 2295 --> | |||
<!-- | |||
;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. | |||
#*[[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. | |||
#*[[Arquivo:DiagramaTempo.png]][[Arquivo:PortaE.png]]--> | |||
===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) | |||
[[Arquivo:ExpressaoBooleana.png]] | |||
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/ 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 | |||
#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 | |||
[[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== | |||
<references /> | |||
---- | |||
[[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)