Sistemas de Numeração Coletânea Antonio Carlos dos Santos Souza www.professores.ifba.edu.br/antoniocarlos Para o computador, tudo são números. Computador Digital Þ Normalmente a informação a ser processada é de forma numérica ou texto Þ codificada internamente através de um código numérico. rico Código mais comum Þ BINÁRIO Por que é utilizado o sistema binário ? REPRESENTANDO INFORMAÇÕES 2 Sistemas de Numeração qO 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. q 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. q 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. Sistemas de Numeração q Conseqüência: O sistema de numeração mais seguro deveria ser aquele com o menor número de símbolos (dígitos). q 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 q 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. Sistemas de Numeração q 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. v 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 vTransistor: 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. Unidade maior (grupo de bits) bits - precisa ter bits suficientes para representar todos os símbolos que possam ser usados: dígitos numéricos, letras maiúsculas e minúsculas do alfabeto, sinais de pontuação, símbolos matemáticos e pixels,etc. REPRESENTANDO INFORMAÇÕES 8 Caracteres alfabéticos maiúsculos 26 Caracteres alfabéticos minúsculos 26 Algarismos 10 Sinais de pontuação e outros símbolos 32 Caracteres de controle 24 Total 118 REPRESENTANDO INFORMAÇÕES 9 Sistemas de Numeração Classificação q Sistemas de Numeração Posicionais q Sistemas de Numeração Não Posicionais Sistemas Posicionais q 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 q 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 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: v Base R=10 v 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 q Sistema posicional binário base R = 2 alfabeto {0, 1} q Sistema posicional octal base R = 8 alfabeto {0, 1, 2, 3, 4, 5, 6, 7} q Sistema posicional hexadecimal base R = 16 alfabeto {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} Sistemas Não Posicionais q 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. Numeração Romana 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 q 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. 0®1®2®3® 4®5®6®7®8®9®0 q 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. 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 v 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. Sistemas numéricos • Base 10 (ou decimal) – O que utilizamos geralmente. • Base 2 (ou binário) – Junto com o hexadecimal, são os outros 2 sistemas mais importantes. • Base 16 (hexadecimal) Sistemas numéricos 22510 O número de símbolos usados no sistema numérico 22516 O sistema numérico decimal • Usado desde a antiguidade • Acredita-se que usamos esse sistema porque temos dez dedos nas nossas mãos. • Os símbolos que usamos para representar números quando os escrevemos são os algarismos de 0 a 9. O sistema numérico decimal • A partir do algarismo que representa a dezena, indicamos o número de vezes que concluímos a seqüência completa. • O conceito de usar os símbolos disponíveis, em ordem, até todos terem sido usados e, depois, acrescentar outro dígito é a base de todos os sistemas numéricos. A única diferença é quantos símbolos estão disponíveis para uso. Sistema numérico binário • O problema do armazenamento de dados foi um dos mais difíceis de solucionar. • Pense nisto: Se você quisesse construir uma máquina que fosse capaz de somar dois números. Sistema numérico binário • Digamos 1+1, você teria de dar a ela a capacidade de guardar esses números antes de começar a se preocupar com o problema de como somá-los. Sistema numérico binário • A fim de construir um dispositivo capaz de armazenar dados com a tecnologia mecânica disponível na época, os dados em si tiveram de ser reduzidos ao seu estado mais fundamental, que é o estado no qual existem apenas duas condições – ligado ou desligado. Sistema numérico binário • Não importa como você descreve essas duas condições distintas, contanto que elas sejam opostas e inconfundíveis. • Você poderia descrevê-las como verdadeiro ou falso, sim ou não, aberto ou fechado, e assim por diante. Recursos • O relé – Funcionamento • A lâmpada ligada a um relé. – A lâmpada apagada é 0 e a lâmpada acesa é 1. Recursos Tudo bem, mas vamos utilizar somente dois números? Não, se você usar mais relés e mais lâmpadas, será possível representar números cada vez maiores. • Utilizando 2 relés... • Utilizando 3 relés... Sistema numérico binário • Os padrões estão ordenados logicamente, seguindo o mesmo método usado para contar em qualquer sistema numérico. • Como representaríamos, no sistema binário, como contar até sete? Sistema numérico binário • Se substituirmos cada lâmpada apagada por zero e cada lâmpada acesa por um, será possível começar a contar usando números binários. • Três relés permitirão que você represente oito quantidades distintas (de zero a sete no sistema decimal) Sistema numérico binário Cada Cada lâmpada lâmpada representa, representa, para para nós, nós, um um transistor. transistor. Podem Podem ser ser tão tão pequenos pequenos que que as as CPUs CPUs tem tem mais mais de de 11 milhão. milhão. Sistema numérico binário • Cada ligado, ou desligado é um dado. • Cada um desses dados é chamado bit. • BIT: É uma contração do termo dígito binário (em inglês, binary digit) Algumas funções lógicas elementares • Em que circunstâncias acende a lâmpada, para cada um dos circuitos apresentados? • Considerando que existe um sinal de controlo para cada interruptor (0: aberto; 1: fechado) construa a tabela que relaciona o estado da lâmpada (0: apagada; 1: acesa) com o dos sinais de controlo, em ambos os casos Interruptor Interruptor Fonte de energia Lâmpada Interruptor Fonte de energia Interruptor Lâmpada Sistemas posicionais de numeração • O sistema decimal é sistema posicional, onde cada dígito representa o coeficiente de uma potência de base 10 (1.492 = 1x103 + 4x102 + 9x101 + 2x100) • O sistema romano de numeração também é posicional, mas o facto de não haver um peso associado a cada posição dificulta as operações… (quanto vale MCMLIX + XLIV?) Conversão entre bases • Sabendo que cada dígito representa o coeficiente da potência associada à base de numeração, torna-se fácil a conversão entre bases: – 10111010100 – B: 1x210 + 0x29 + 1x28 + 1x27 + 1x26 + 0x25 + 1x24 + 0x23 + 1x22 + 0x21 + 0x20 – E para realizar a conversão inversa (de decimal para binário)? – E se pretendermos converter de / para hexadecimal? Transformações de Base q Passagem de uma base R para a base 10 v converte-se a base e cada dígito do número para o equivalente decimal. v 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 Transformações de Base q Passagem de uma base 10 para a base R v 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) = (2331) 10 5 Transformações de Base q Passagem de uma base 10 para a base R v 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. Transformações de Base q 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 q Mudança de base entre base binária e base de potência de 2 v 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. 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) Conversão TABELA DE CONVERSÃO Binário 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Octal 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 Decimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Hexadecimal 0 1 2 3 4 5 6 7 8 9 A B C D E F