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

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
 
(74 revisões intermediárias por 3 usuários 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 cálculo 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''' <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>.


Qualquer operação, por mais complexa que pareça, é traduzida internamente pelo processador para estas operações.
==Representação elétrica dos bits 0 e 1==


= Portas Lógicas =
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.  
As portas lógicas implementam os operadores da lógica binária e são os principais componentes da eletrônica digital.


[http://pt.wikipedia.org/wiki/Porta_l%C3%B3gica Portas lógicas na Wikipédia]
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)===
===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,  
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):
e será 0 caso contrário, conforme podemos confirmar pela tabela verdade, onde A é o bit de entrada e S é o bit de saida:


{| border=1
{| border=1
Linha 29: Linha 32:
|}
|}


[http://pt.wikipedia.org/wiki/Porta_NOT Porta Não na Wikipédia]
Expressão booleana:
S = ~A


===Porta E (AND)===
===Porta E (AND)===
[[Arquivo:PortaE.png]]
[[Arquivo:PortaE.png]]


Implementa o operador E (AND), ou conjunção binária, devolve um bit 1 sempre que ambos operandos sejam 1,  
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 saida:


{| border=1
{| border=1
Linha 51: Linha 54:
|}
|}


[http://pt.wikipedia.org/wiki/Porta_AND Porta E na Wikipédia]
Expressão booleana:
S = A . B


===Porta OU (OR)===
===Porta OU (OR)===
[[Arquivo:PortaOU.png]]
[[Arquivo:PortaOU.png]]


Implementa o operador OU (OR), ou disjunção binária, devolve um bit 1 sempre que pelo menos um dos operandos seja 1,  
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):
conforme podemos confirmar pela tabela verdade:


{| border=1
{| border=1
Linha 73: Linha 76:
|}
|}


[http://pt.wikipedia.org/wiki/Porta_OR Porta OU na Wikipédia]
Expressão booleana:
S = A + B


===Portas Não E (NAND) e Não OU (NOR) ===
===Portas Não E (NAND)===


Correspondem aos operadores E e OU, seguidos por uma negação, respectivamente.
Corresponde ao operador E seguido por uma negação.


[http://pt.wikipedia.org/wiki/Porta_NAND Porta Não E na Wikipédia]
{| border=1
 
|-
[http://pt.wikipedia.org/wiki/Porta_NOR Porta Não Ou na Wikipédia]
| '''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]]
[[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,
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:
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 103: Linha 133:
|}
|}


[http://pt.wikipedia.org/wiki/Porta_XOR Porta OU-Exclusivo na Wikipédia]
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:

  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)