Sistemas de Numeração UNIDADE 1 PROF. ANTONIO LOPES DE SOUZA, Ph.D. DEPARTAMENTO DE ENGENHARIA ELÉTRICA / UFRJ Sistemas de Numeração O sistema de numeração com o qual estamos mais familiarizados é o decimal, cujo alfabeto (coleção de símbolos) é formado por 10 dígitos acima mostrados. Um Computador Decimal: se trabalhasse com o sistema decimal um computador precisaria codificar 10 níveis de referência para caracterizar os 10 dígitos do sistema utilizado. Esses níveis de referência poderiam ser valores de tensão (0V, 1V, 2V, etc.) que precisariam ser definidos e interpretados de maneira clara e precisa pela máquina. Desvantagem: quanto maior o número de interpretações maior a probabilidade de erro. Para decidir que está lendo o número 5 a máquina precisaria ter certeza de que o que leu não é: 0, 1, 2, 3, 4, 6, 7, 8, 9. 1 Sistemas de Numeração Conseqüência: O sistema de numeração mais seguro deveria ser aquele com o menor número de símbolos (dígitos). Conclusão: o melhor sistema de numeração para uma máquina seria o binário com apenas dois dígitos, o zero (0) e o um (1). Obs.: Não há sistema de numeração com alfabeto de um único dígito. Todo sistema de numeração precisa dos conceitos de presença (1) e ausência (0). Sistemas de Numeração Um possível problema no uso de máquinas binárias: o número binário precisa de mais dígitos para ser escrito do que o decimal. (2)10 número de animais representado em decimal (10)2 número de animais representado em binário Quatro em decimal é representado como 4. Sua representação em binário é 100. Conseqüência: o computador binário seria mais preciso porém muito lento porque a leitura da informação iria requerer mais tempo. 2 Sistemas de Numeração Uma solução: o uso de dispositivos eletrônicos baseados na tecnologia dos semicondutores, como os transistores. O transistor: é um dispositivo usado para controlar o fluxo de corrente. Ele tem duas características importantes: 1- é capaz de amplificar um sinal elétrico. 2- é capaz de chavear (comutar) entre ligado e desligado (ou fechado e aberto), deixando corrente passar através dele ou bloqueando-a. Essas condições são também denominadas “saturação” e “corte”, respectivamente. O transistor pode mudar da condição de saturação para o corte em velocidades acima de um milionésimo de segundo. Ele pode ser usado para caracterizar a presença (ou ausência) de um dígito binário (0 ou 1) e pode tomar decisões desse tipo a uma taxa superior a um milhão de decisões por segundo. Sistemas de Numeração O primeiro Transistor Um Transistor moderno Transistor: inventado nos Laboratórios da Bell Telephone em 12/1947 por John Bardeen, Walter Brattain e William Shockley – Prêmio Nobel de física de 1956. O transistor é capaz de comutar em um milionésimo de segundo entre o corte e a saturação. 3 Sistemas de Numeração Classificação Sistemas de Numeração Posicionais Sistemas de Numeração Não Posicionais Sistemas Posicionais Nos sistemas de numeração posicional, o valor do dígito em um número depende da posição que ele ocupa neste mesmo número. 1989 = 1000+900+80+9 1989 = 1x103 + 9x102 + 8x101 + 9x100 Há um peso para cada posição ocupada pelo dígito. Os pesos crescem para esquerda na parte inteira e decrescem para a direita na parte fracionária 1989,4= 1x103 + 9x102 + 8x101 + 9x100+4x10-1 4 Sistemas Posicionais A representação posicional fornece uma forma simplificada para a escrita de números e permite a representação de qualquer número com um alfabeto (uma coleção de símbolos) restrito de dígitos. O sistema decimal tem: Base R=10 Um alfabeto ordenado e 10 dígitos, {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, e qualquer número pode ser representado com o uso deles. Sistemas Posicionais Outros Exemplos de Sistemas Posicionais Sistema posicional binário base R = 2 alfabeto {0, 1} Sistema posicional octal base R = 8 alfabeto {0, 1, 2, 3, 4, 5, 6, 7} Sistema posicional hexadecimal base R = 16 alfabeto {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} 5 Sistemas Não Posicionais Sistema de Numeração Romano No número XX, vinte em decimal, o valor do dígito X à esquerda é o mesmo daquele à direita. Neste caso a representação é aditiva, com X representando a quantidade decimal 10, e com a combinação XX associada a 10+10=20. Por outro lado em IX (nove em decimal) a representação é subtrativa. M = 1000 Como antes de M não tinha nenhuma letra, buscavam a segunda letra de maior valor. D = 500 Depois tiravam de D o valor da letra que vem antes. D – C = 500 – 100 = 400 Somavam 400 ao valor de M, porque CD está depois de M. M + CD = 1000 + 400 = 1400 Sobrava apenas o V. Então: MCDV = 1400 + 5= 1405 Geração de Inteiros Algoritmo de avanço de dígitos: Avançar um dígito de um alfabeto ordenado consiste em substituí-lo pelo próximo dígito na hierarquia. O dígito de maior valor do conjunto é sempre avançado para o aquele de menor valor na hierarquia. 0123 4567890 Algoritmo de geração de inteiros: a) o primeiro inteiro é o zero b) o próximo inteiro é obtido do precedente na lista avançando-se seu dígito mais à direita. No caso deste dígito avançar para zero, avança-se, então, o dígito adjacente à esquerda. 6 Geração de Inteiros Exemplo: Gerar os 26 primeiros inteiros do sistema decimal. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Observe que o nove avança para o zero, logo o dígito mais à esquerda (o zero, não mostrado explicitamente no número) é avançado para 1 gerando o próximo número na lista, o 10. Transformações de Base Passagem de uma base R para a base 10 converte-se a base e cada dígito do número para o equivalente decimal. decompõe-se o número de acordo com a estrutura posicional e, usando aritmética decimal, efetuam-se as operações de produtos e somas. Notação: (...)R ler como o número do parêntesis expresso na base R. (1101)2=1x23+1x22+0x21+1x20=8+4+0+1=13 (2B0)16=2x162+(11)x161+0x160= 512+176+0=688 7 Transformações de Base Passagem de uma base 10 para a base R Parte inteira: Algoritmo da divisão repetida Divide-se o inteiro decimal repetidamente pela base R até que se obtenha um quociente inteiro igual a zero. Os restos das divisões sucessivas, lidos do último para o primeiro, constituem o número transformado para a base R. (341) 10 = (2331) 5 Transformações de Base Passagem de uma base 10 para a base R Parte fracionária: Algoritmo da multiplicação repetida A parte fracionária é multiplicada por R. A parte inteira desse produto é guardada e a parte fracionária é novamente multiplicada por R. O processo é repetido até que se obtenha um número com parte fracionária nula ou até que se considere a aproximação suficiente. As partes inteiras dos produtos sucessivos, lidas da primeira para a última, formam a parte fracionária do número transformado. 8 Transformações de Base Passagem de uma base 10 para a base R Parte fracionária: Algoritmo da multiplicação repetida. Exemplo: Então (0,4375)10 = (0,0111)2 Transformações de Base Mudança de base entre base binária e base de potência de 2 A base para a qual se quer a transformação é expressa no formato 2n . Se essa base for R=8, por exemplo, o valor de “n” é 3 porque 8 = 23. Formam-se grupos, a partir da direita do número binário, contendo uma quantidade de dígitos igual ao número “n”. Esses grupos de “n” dígitos são lidos e representados como os dígitos do sistema para o qual se quer a transformação. transformação para a base hexadecimal. 9 Transformações de Base Exemplos: (25)10 = (011|001)2 = (31)8, grupos de 3 dígitos (8=23) a partir da direita do número binário para transformação para a base octal. (25)10 = (0001|1001)2 = (19)16, grupos de 4 (16=24) Operações Aritméticas Soma na base 10, Soma na base 2, Soma na base R (explicar com exemplos no quadro) Complemento de 1: O complemento de 1 de um número binário é obtido trocando-se cada dígito 1 por 0 e vice-versa. A notação C1 (...) é usada para designar o complemento de um do número entre parêntesis. Complemento de 2: O complemento de 2 de um número binário é obtido trocando-se inicialmente todos os 0s por 1s e viceversa. Após isso adiciona-se 1 ao número obtido. Notação C2(...) 10 Operações Aritméticas Subtração por complemento de 1: Soma-se o minuendo ao complemento de 1 do subtraendo. O bit que se propaga após a última coluna da adição é somado de volta ao bit menos significativo do resultado. (resolver exemplo no quadro) Subtração por complemento de 2: Soma-se o minuendo ao complemento de 2 do subtraendo. O bit que se propaga após a ultima coluna da adição é desprezado. (resolver exemplo no quadro) Álgebra de Boole George Simon Boole (1815-1864) O criador da álgebra dos circuitos digitais 11 Álgebra de Boole 1- A Álgebra de Boole é aplicável ao projeto dos circuitos lógicos e funciona baseada em princípios da lógica formal, uma área de estudo da filosofia. 2- Um dos pioneiros no estudo da lógica formal foi Aristóteles (384322 AC), que publicou um tratado sobre o tema denominado "De Interpretatione". 3- Boole percebeu que poderia estabelecer um conjunto de símbolos matemáticos para substituir certas afirmativas da lógica formal. Publicou suas conclusões em 1854 no trabalho “Uma Análise Matemática da Lógica” 4- Claude B. Shannon mostrou (em sua tese de mestrado no MIT) que o trabalho de Boole poderia ser utilizado para descrever a operação de sistemas de comutação telefônica. As observações de Shannon foram divulgadas em 1938 no trabalho "Uma Análise Simbólica de Relés e Circuitos de Comutação". Álgebra de Boole Definição da Álgebra de Boole: 1- A álgebra de Boole é um sistema matemático composto por operadores, regras, postulados e teoremas. 2- A álgebra booleana usa funções e variáveis, como na álgebra convencional, que podem assumir apenas um dentre dois valores, zero (0) ou um (1). 3- A álgebra booleana trabalha com dois operadores, o operador AND, simbolizado por (.) e o operador OR, simbolizado por (+). O operador AND é conhecido como produto lógico e o operador OR é conhecido como soma lógica. Os mesmos correspondem, respectivamente, às operações de interseção e união da teoria dos conjuntos. 12 Álgebra de Boole Operadores da Álgebra Booleana As variáveis booleanas serão representadas por letras maiúsculas, A, B, C,... e as funções pela notação f(A,B,C,D,...) Álgebra de Boole Operadores Booleanos Fundamentais Operador AND (interseção) 1- Definição: A operação lógica AND entre duas ou mais variáveis somente apresenta resultado 1 se todas as variáveis estiverem no estado lógico 1. 2- Símbolo 3- Tabela Lógico Verdade 13 Álgebra de Boole Operadores Booleanos Fundamentais Operador OR (união) 1- Definição: A operação lógica OR entre duas ou mais variáveis apresenta resultado 1 se pelo menos uma das variáveis estiver no estado lógico 1. 2- Símbolo Lógico 3- Tabela Verdade Álgebra de Boole Operadores Booleanos Fundamentais Operador NOT (inversor) 1- Definição: A operação de complementação de uma variável é implementada através da troca do valar lógico da referida variável. 2- Símbolo Lógico 3- Tabela Verdade 14 Álgebra de Boole Operadores Booleanos Secundários Operador NAND 1- Definição: A operação lógica NAND entre duas ou mais 2- Símbolo Lógico 3- Tabela Verdade Álgebra de Boole Operadores Booleanos Secundários Operador NOR 1- Definição: A operação lógica NOR entre duas ou mais variáveis somente apresenta resultado 1 se todas as variáveis estiverem no estado lógico 0. 2- Símbolo Lógico 3- Tabela Verdade 15 Álgebra de Boole Operadores Booleanos Secundários Operador EXOR (OU exclusivo) 1- Definição: A operação lógica EXOR entre duas variáveis A e B apresenta resultado 1 se uma e somente uma das duas variáveis estiver no estado lógico 1 (ou seja se as duas variáveis estiverem em estados lógicos diferentes). 2- Símbolo Lógico 3- Tabela Verdade Álgebra de Boole Operadores Booleanos Secundários Operador EXNOR (negativo de OU exclusivo) 1- Definição: A operação lógica EXNOR entre duas variáveis A e B apresenta resultado 1 se e somente se as duas variáveis estiverem no mesmo estado lógico. 2- Símbolo Lógico 3- Tabela Verdade 16 Álgebra de Boole Postulados da Álgebra de Boole O significado dos postulados pode ser entendido facilmente se fizermos a associação com a teoria dos conjuntos Álgebra de Boole Teoremas da Álgebra de Boole 17 FIM 18