Lógica Binária

Transcrição

Lógica Binária
Lógica Binária
Prof. Leandro Tonietto
Introdução a computação e suas aplicações
Curso de Segurança da Informação
UNISINOS
jun-09
Introdução
Lógica binária é a base do sistema
computacional.
Qualquer operação pode ser representada
pela combinação operações lógicas, num
sistema computacional.
Operações são realizadas sobre bits,
portanto, são binárias:
NOT, AND, OR, XOR e SHIFT
4-jun-09
Leandro Tonietto
2
Introdução
Tabela verdade:
Basicamente, é uma tabela onde são mostradas as
possíveis combinações de entrada e as respostas ou
saídas.
Representa desde a combinação mais simples de
valores binários, apenas zero ou um; até a
representação de valores combinados em bits.
Utilizada para demonstrar a reação da aplicação de
operações lógicas sobre números binários.
4-jun-09
Leandro Tonietto
3
NOT
Operador unário que representa
a negação binária de uma
informação.
É o complemento de um dado.
Bit que 1 vira 0. Que é 0 vira 1.
Exemplo:
NOT 0 = 1
NOT 1 = 0
Tabela verdade do operador NOT
Op1
Not Op1
0
1
1
0
Em linguagens de programação
utiliza-se, normalmente, os
símbolos ! (operações booleanas)
ou ~ (operações binárias)
4-jun-09
Leandro Tonietto
4
AND
Operador binário, chamado de
conjunção binária.
Faz o chamado E lógico.
Retorna verdadeiro se o operador 1 E
o operador 2 são verdadeiros.
Portanto, resultará 1 o AND entre dois
bits se, e somente se, ambos forem 1;
caso contrário, resulta em zero.
Exemplo:
1 AND 1 = 1
0 AND 1 = 0
Em linguagens de programação
utiliza-se, normalmente, os
símbolos && (operações booleanas)
ou & (operações binárias)
4-jun-09
Leandro Tonietto
Tabela verdade do operador AND
Op1 Op2
Op1 AND
Op2
0
0
0
0
1
0
1
0
0
1
1
1
5
OR
Operador binário, chamado de
disjunção binária.
Faz o chamado OU lógico.
Retorna verdadeiro se o operador 1 OU
o operador 2 são verdadeiros.
Portanto, resultará 1 o OR entre dois
bits se, e somente se, pelo menos um
dos operadores for 1; caso contrário,
resulta em zero.
Exemplo:
1 OR 1 = 1
0 OR 1 = 1
0 OR 0 = 0
Em linguagens de programação
utiliza-se, normalmente, os símbolos
|| (operações booleanas) ou |
(operações
binárias)
4-jun-09
Leandro Tonietto
Tabela verdade do operador OR
Op1 Op2
Op1
OR
Op2
0
0
0
0
1
1
1
0
1
1
1
1
6
XOR
Operador binário, chamado de
disjunção binária exclusiva.
Retorna verdadeiro se o operador 1 e
o operador 2 são diferentes.
Portanto, resultará 1 o XOR entre dois
bits se, e somente se, um dos
operadores for 1 e outro for 0; caso
contrário, resulta em zero.
Exemplo:
1 OR 1 = 0
0 OR 1 = 1
0 OR 0 = 0
Em linguagens de programação
utiliza-se, normalmente, os
símbolos ^ (operações booleanas
ou binárias)
4-jun-09
Leandro Tonietto
Tabela verdade do operador XOR
Op1 Op2
Op1
XOR
Op2
0
0
0
0
1
1
1
0
1
1
1
0
7
Operações com número binários
As operações lógicas com números binários deve
ser feita bit-a-bit.
Só possível fazer operações lógicas sobre
números binários. Portanto, é obrigatória a
conversão de um número numa base qualquer
para base binária.
Exemplo:
4-jun-09
NOT 11010011 = 00101100
11010011 AND 00011101 = 00010001
11010011 OR 00011101 = 11011111
11010011 XOR 00011101 = 11001110
Leandro Tonietto
8
Operações com número binários
Exercícios: Faça as operações lógicas AND, OR e
XOR para a seguinte tabela
4-jun-09
Op1
Op2
00011100
11110000
11100011
10101010
10101010
00110111
11110000
10001000
00001111
01010101
11001100
11111111
11101110
00100100
10001000
00010001
AND
Leandro Tonietto
OR
XOR
9
SHIFT
Operação binária de deslocamento de BITs
Deslocamento de bits é feito um-a-um, no
sentido e na quantidade informados.
Equivale a multiplicação ou divisão do operando
por 2.
Com o deslocamento informações são perdidas e
informações devem ser inseridas. O que fazer?
Depende. Em geral é inserido zero aonde não há
informações a serem deslocadas.
E os bits “perdidos” podem ou não serem aproveitados
pelo compilador.
4-jun-09
Leandro Tonietto
10
SHIFT
00011100 SHIFT DIR 2 = 00000111
00011100 SHIFT ESQ 2 = 01110000
1000 >> 3 = 1
1000 >> 2 = 10
1000 << 2 = 100000
4-jun-09
Leandro Tonietto
11
SHIFT
Nas linguagens de programação, normalmente é
representado pelos sinais:
>> (deslocamento para a direita, mantendo o bit de sinal)
• 00011110 >> 2 = 00000111
• 11001110 >> 2 = 10010011
<< (deslocamento para a esquerda, mantendo o bit de sinal)
• 00011110 << 2 = 01111000
• 11001110 << 2 = 10111000
>>> (deslocamento para direita)
• 00011110 >>> 2 = 00000111
Demonstração em linguagem de programação
4-jun-09
Leandro Tonietto
12
Utilização de operações binárias na
programação
Diversas operações binárias são feitas por questões de
desempenho ou otimização de memória. Por exemplo:
Operações com máscara de bits. Codificação de bits para
representar várias informações em um byte (utiliza-se
operadores OR e AND)
Empacotamento de bits, por exemplo, armazenar dados tipo byte
em dados tipo int (utiliza-se OR, AND e SHIFT)
Multiplicação por uma potência de 2 (basta fazer <<)
Divisão por uma potência de 2 (basta fazer >>)
Verificar se determinado padrão de bits (um número inteiro) está
presente num valor.
4-jun-09
Leandro Tonietto
13
Exercícios
Faça o deslocamento de bits:
4-jun-09
00110111 >> 4
00110111 << 4
10011011 >> 3
10010001 << 3
56 >> 3
64 >> 2
56 << 3
-55 >>> 3
-37 << 2
-85 >> 2
Não esqueça que o deslocamento de bits é feito na
base binária!
Leandro Tonietto
14
Referências bibliográficas
SILVEIRA, Ricardo Azambuja. Sistemas
numéricos e a Representação Interna dos
Dados no Computador. Disponível em:
http://www.inf.ufsc.br/~silveira/INE5602/Lami
nas/INE5602Aula3.pdf. Acessado em
08/11/2007.
Lógica Binária. Disponível em:
http://pt.wikipedia.org/wiki/L%C3%B3gica_bin
%C3%A1ria. Acessado em: 07/11/2007.
4-jun-09
Leandro Tonietto
15