Logica Binaria: mudanças entre as edições
Linha 186: | Linha 186: | ||
;OU lógico: O operador OU também pode ser utilizado dentro de uma condição SE: | ;OU lógico: O operador OU também pode ser utilizado dentro de uma condição SE: | ||
if (a | if (a > 0 || b > 0) { // se uma ou outra variável for maior que 0 | ||
// faça | // faça | ||
} | } |
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)