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