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

De Wiki Cursos IFPR Foz
Ir para navegaçãoIr para pesquisar
Sem resumo de edição
 
(57 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 estas operações.
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>.


== Portas Lógicas ==
==Representação elétrica dos bits 0 e 1==
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]
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.  


==Representação elétrica dos bits 0 e 1==
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.


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 níveis de '''tensão 0V (nível BAIXO) para representar o 0''' e '''5V (nível ALTO) para representar 1'''.
== Portas Lógicas ==
Outras tecnologias de CI, como a CMOS, utilizam outros níveis de tensão.
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 saída (out):


{| border=1
{| border=1
Linha 32: Linha 33:


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


===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 saída (out):


{| border=1
{| border=1
Linha 58: Linha 56:
Expressão booleana:
Expressão booleana:
  S = A . B
  S = A . B
[http://pt.wikipedia.org/wiki/Porta_AND Porta E na Wikipédia]


===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, onde A e B são bits de entrada e S é o bit de saída (out):


{| border=1
{| border=1
Linha 84: Linha 79:
  S = A + B
  S = A + B


[http://pt.wikipedia.org/wiki/Porta_OR Porta OU na Wikipédia]
===Portas Não E (NAND)===


===Portas Não E (NAND) e Não OU (NOR) ===
Corresponde ao operador E seguido por uma negação.


Correspondem aos operadores E e OU, seguidos por uma negação, respectivamente.
{| border=1
 
|-
Expressões booleanas:
| '''A''' || '''B''' || '''S'''
*Não E
|-
  S = /(A . B)
| 0 || 0 || 1
*Não OU
|-
  S = /(A + B)
| 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, 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 saída (out):
{| border=1
{| border=1
|-  
|-  
Linha 115: 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===


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:
 
  S = (A + B).(~B + C)
;Exemplo
[[Arquivo:ExpressaoBooleana.png]]
Circuito construído a partir da expressão lógica:
  S = (A + B).(/B + C)
[[Arquivo:PortasLogicas.png]]


Note que:
Note que:
*As expressões (A + B) e (/B + C) são entradas de uma porta 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 /B + C tambḿ é 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.
 
;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.


;Exercício
x = !y; // inverte o valor de y armazenado em x
#Construa a tabela verdade para o circuito apresentado no exemplo anterior: S = (A + B).(/B + C).
#Construa o circuito gerado pela expressão S = A.C + /(B.C) + /A.B.C
#Construa a tabela verdade para o circuito do exercício anterior.


===Álgebra de Boole===
;E lógico: O operador E também pode ser utilizado dentro de uma condição SE:


[http://pt.wikipedia.org/wiki/%C3%81lgebra_booliana Álgebra de Boole na Wikipédia]
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 150: Linha 210:
#A . 1 = A
#A . 1 = A
#A . A = A
#A . A = A
#A . /A = 0
#A . ~A = 0
#A + 0 = A
#A + 0 = A
#A + 1 = 1
#A + 1 = 1
#A + A = A
#A + A = A
#A + /A = 1
#A + ~A = 1
 
;Teoremas de DeMorgan:
#~(A + B) = ~A . ~B
#~(A . B) = ~A + ~B


;Teoremas de DeMorgan
[[Arquivo:TeoremasMorgan.png]]


*/(A + B) = /A . /B
;Exercício: Construir e simular circuitos para comprovar experimentalmente os Teoremas de DeMorgan:
*/(A . B) = /A + /A
#~(A + B) = ~A . ~B
#~(A . B) = ~A + ~B


[[Arquivo:TeoremasMorgan.png]]
==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)