Logica Binaria: mudanças entre as edições

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
 
(12 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 146: 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'''.


Por exemplo, se tivermos um circuito descrito por S = A . B . C, sabemos que trata-se de uma porta E de três entradas. Se tivermos um circuito descrito por S = A + ~B, sabemos que trata-se de uma porta OU com a entrada B invertida.
;Exemplo: Circuito construído a partir da expressão lógica:
 
====Exemplo====
Circuito construído a partir da expressão lógica:
  S = (A + B).(~B + C)
  S = (A + B).(~B + C)
[[Arquivo:ExpressaoBooleana.png]]
[[Arquivo:ExpressaoBooleana.png]]
Linha 158: Linha 155:
*A expressão ~B + C também é gerada por portas OU, com um inversor na entrada B.
*A expressão ~B + C também é gerada por portas OU, com um inversor na entrada B.


;Exercício
;Tabela Verdade: O funcionamento de um circuito lógico é determinado através de sua '''tabela verdade'''.
#Construa a tabela verdade para o circuito apresentado no exemplo anterior: S = (A + B).(~B + C).
: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
}


===Álgebra de Boole===
;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 173: Linha 216:
#A + ~A = 1
#A + ~A = 1


====Teoremas de DeMorgan====
;Teoremas de DeMorgan:
 
#~(A + B) = ~A . ~B
*~(A + B) = ~A . ~B
#~(A . B) = ~A + ~B
*~(A . B) = ~A + ~B


[[Arquivo:TeoremasMorgan.png]]
[[Arquivo:TeoremasMorgan.png]]


;Exercícios
;Exercício: Construir e simular circuitos para comprovar experimentalmente os Teoremas de DeMorgan:
*Comprovar os dois Teoremas de DeMorgam com tabelas verdade.
#~(A + B) = ~A . ~B
 
#~(A . B) = ~A + ~B
==Laboratório e Exercícios de Simulação==
;Para este laboratório será utilizado o [[Simulador de Circuitos Lógicos - Logisim]]: Veja no ''link'' as instruções para ''download'' e instalação do programa.
 
===Circuitos com portas lógicas===
#Construir, simular e deterninar 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 circuitos para comprovar experimentalmente os Teoremas de DeMorgan:
#*~(A + B) = ~A . ~B
#*~(A . B) = ~A + ~B
#Construir e simular o circuito Ou-Exclusivo com portas AND, OR e NOT, conforme a figura: [[Arquivo:OuExclusivo.png | 300px]]
#*Represente o circuito acima como uma expressão lógica.


==Referências==
==Referências==
Linha 202: Linha 230:


----
----
--[[Usuário:Evandro.cantu|Evandro.cantu]] ([[Usuário Discussão:Evandro.cantu|discussão]]) 10h50min de 12 de junho de 2014 (BRT)
[[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:

  1. S = (A + B).(~B + C)
  2. S = A.C + ~(B.C) + ~A.B.C
  3. S = A.B + ~C + ~(C.D)
  4. Z = X.(~Y + W)
  5. Construir e simular o circuito da figura abaixo e comparar seu funcionamento com a porta Ou-Exclusivo:

Álgebra de Boole

Teoremas Booleanos
  1. A . 0 = 0
  2. A . 1 = A
  3. A . A = A
  4. A . ~A = 0
  5. A + 0 = A
  6. A + 1 = 1
  7. A + A = A
  8. A + ~A = 1
Teoremas de DeMorgan
  1. ~(A + B) = ~A . ~B
  2. ~(A . B) = ~A + ~B

Exercício
Construir e simular circuitos para comprovar experimentalmente os Teoremas de DeMorgan:
  1. ~(A + B) = ~A . ~B
  2. ~(A . B) = ~A + ~B

Referências

  1. 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)