Baixe o app para aproveitar ainda mais
Prévia do material em texto
[Digite texto] Unidade II - Sistemas de Numeração Representação de Informações Símbolos - usamos símbolos para representar um objeto ou um valor absoluto. Exemplos : Mesa e table – representam a mesma coisa. 6, seis, six, VI – representam o mesmo valor Como o computador é uma maquina digital todas as informações nele armazenadas são representadas por dois estados diferentes. Simbolicamente dizemos que adotamos os valores discretos 0 e 1 como a base da representação, mas na prática usamos dois valores diferentes de voltagem, de polaridade magnética ou de refração do laser. 0 1 “presença / ausência de voltagem” ou “ligado / desligado” ou “1 / 0” Assim considerando que um computador digital só pode assumir dois valores devemos representar todos as nossas letras e números com os símbolos existentes no sistema binário ( 0 e 1 ). Teorema Fundamental da numeração Notação posicional: Os algarismos que formam o número assumem valores diferentes de acordo com sua posição no número. Quanto mais a esquerda esta o digito maior valor significativo ele possui. 1024 + significativo - significativo (1024)10 100 * 4 = 1 * 4 = 4 + 101 * 2 = 10 * 2 = 20 + 102 * 0 = 100* 0 = 0 + 103 * 1 = 1000 * 1 = 1000 + valor = 1024 Principais Bases de Numeração Classificamos uma base de numeração pela quantidade de algarismos diferentes disponíveis na base Base decimal 10 símbolos de 0 a 9; Base binária 2 símbolos de 0 e 1; Base Hexadecimal 16 símbolos de 0 a 9 e A B C D E F; as letras representam os valores de 10 a 15 Conversão de Bases 4.1 - Base qualquer para Base decimal Podemos converter um numero em qualquer base para a base 10 com o somatório do digito multiplicado pela base elevada a posição que o digito se encontra no numero, generalizando temos a expressão : bn * an + ... + b2 * a2 + b1 * a1 + b0 * a0 onde b é base adotada. Lembrar que a posição do digito começa na casa ZERO. 9 8 7 6 5 4 3 2 1 0 Exemplificando: com um numero na base 4 (1024)4 ( )10 b3 * a3 + b2* a2 + b1 *a1 +b0 * a0 = 43 * 1 + 42 * 0 + 41 * 2 + 40 * 4 = 64 * 1 + 16* 0 + 4 * 2 + 1 * 4 = 64 + 0 + 8 + 4 = (76)4 Outros exemplos: (111001)2 = ( )10 1 1 1 0 0 1 20 * 1 = 1 21 * 0 = 0 22 * 0 = 0 23 * 1 = 8 24 * 1 = 16 25 * 1 = 32 += 1 + 8 + 16 + 32 = (57)10 (21327)8 = ( )10 += 84 * 2 + 83 *1 +82 * 3 + 81 * 2 + 80 *7 = 4096 * 2 + 512 * 1 + 64 * 3 + 8* 2 + 1 * 7 = 8192 + 512 + 192 + 16 +7 = (8919)10 ( )10 ( )2 ( )16 10 alg. 2 alg. 16 alg. 0 0 0 1 1 1 2 01 2 3 11 3 4 100 4 5 101 5 6 110 6 7 111 7 8 1000 8 9 1001 9 10 1010 A 4.2 - Conversão da base decimal para outras bases: Dividir sucessivamente os quocientes pela base desejada até o quociente ser zero. Os restos pegos ao contrario formarão o número na base desejada. (7)10 ( )2 7 / 2 = 3, resto 1 3 / 2 = 1, resto 1 1 / 2 = 0, resto 1 (7)10 = (111)2 (160)10 ( )8 160 / 8 = 20, resto 0 20 / 8 = 2, resto 4 ` 2 / 8 = 0, resto 2 (160)10 = (240)8 (1531)10 ( )16 1531 / 16 = 95, resto 11 95 / 16 = 5, resto 15 5 / 16 = 0, resto 5 (1531)10 = (5FB)16 Forma gráfica de conversão da Base 10 para a base 2 1 1 1 1 1 1 1 1 27 26 25 24 23 22 21 20 128 64 32 16 8 4 2 1 Podemos deduzir que o menor valor armazenado em 1 byte é 0 (zero) e que o maior valor armazenado em 1 byte é 255 (somatório de todas as casas) e que em um byte botemos armazenar 256 valores diferentes (0 a 255). - Base 2 para 16 e base 16 para 2 Devemos considerar a relação de 1 para 4 23 22 21 20 8 4 2 1 Da base 2 para a 16 dividir da direita para esquerda em grupos de 4 bits e passar os dígitos binários para hexadecimais, caso o último grupo não seja múltiplo de 4 preencher com zeros. Da base 16 para a 2 para cada 1 digito hexadecimal criar grupo de 4 bits e passar os dígitos hexadecimais para binários. Exemplos: ( 110101100 )2 ( )16 Agrupar de 4 em 4 bits (da direita para a esquerda) e converter cada grupo para hexadecimal ( 1 1010 1100 )2 ( 1 A C )16 ( F1A )16 ( )2 Cada algarismo hexadecimal gera um conjunto de 4 bits ( F 1 A )16 ( 1111 0001 1010)2 Exemplos de estudo: ( 248 )10 = ( ) 2 ( 110000001 ) 2 = ( ) 10 ( 2A3C ) 16 = ( ) 10 ( 2A1B ) 16 = ( ) 2 ( 100110101 ) 2 = ( )16 Aritmética Computacional Operações aritméticas em bases quaisquer Funciona como na base decimal, lembre-se que o valor máximo representável estoura em base-1, na decimal (base 10) estoura em 9. Em operacões com operandos em bases diferentes, converter para uma base comum e efetuar a operação Soma: base 10 1294 + base 12 1294 + base 16 FACA + 3275 3275 CAFE 4569 4549 1C5C8 Subtração: decimal 125 - binária 1111 - 100111 - octal 7032 - 7654 - 57 1010 011100 1341 4567 68 0101 001011 5471 3065 Hexadecimal 4567 - 10A5 - 4271 015B 02F6 F4A Representação de dados É a forma na qual o computador armazena e manipula os dados a ele fornecidos para processamento.Um computador, para quem não sabe, funciona basicamente através da execução sistemática de instruções que o orienta a realizar algum tipo de operação sobre valores. Esses valores são comumente chamados de dados. O homem representa a informação através de símbolos alfanuméricos, de forma a torná-la inteligível para os outros e para possibilitar armazenamento. Os símbolos em sí não são a própria informação, mas sim uma forma de representá-la. Já o computador as representa sempre na forma binária, ou seja, apenas através de 2 símbolos diferentes: 0 ou 1, ligado ou desligado. De modo geral, exitem 3 formas primitivas de dados que são usadas em programas e entendidas pelo hardware: dados sob a forma de caracteres (tipo caractere), lógica (tipo lógico) e numérica (tipo numérico). Outras formas mais complexas são permitidas em certas linguagens modernas (tais como: tipo registro, tipo array, tipo ponteiro etc.). No entanto, durante o processo de compilação, os dados acabam sendo convertidos nas formas primitivas (caractere, lógica e numérica) para que o hardware possa entendê-las e executá-las. 6.1 Tipos de dados Ao escrever um programa o programador deve definir o tipo de cada variável a ser utilizada em sua lógica. De acordo com o tipo definido o computador armazenará e manipulará este dado de forma diferente. Tipos mais comuns: caractere (primitivos) lógico numérico ponto fixo sinal emagnitude complemento a 1 complemento a 2 ponto flutuante Outros tipos: Arrays (complexos) Registros Ponteiros obs.: durante o processo de compilação são convertidos para os tipos primitivos. Tipo caractere Para poder representar os símbolos alfanuméricos entendidos pelo homem, define-se no computador para cada símbolo um conjunto de bits que o identifica de forma unívoca, gerando uma tabela de códigos de representação de caracteres. As tabelas de códigos mais comuns são: BCD Binary Coded Decimal - grupo de 6 bits/caractere, permitindo a codificação de 64 caracteres. EBCDIC Extended Binary Coded Decimal Interchange Code Exclusivo da IBM, utiliza oito bits para represntar cada símbolo, podendo codificar até 256 símbolos diferentes. ASCII American Standard Code for Information Interchange Usado pelos demais fabricantes, utiliza 7 bits para representar 128 símbolos mais um oitavo bit de paridade. ASCII Extended American Standard Code for Information Interchange Extended Oito bits, representando 256 símbolos diferentes, é o padrão dos PCs. Concepção no papel Armazenamento do fonte Compilação Símbolos alfanuméricos Conversão dos símbolos humanos para os bits equivalentes de acordo com a tabela de códigos utilizada pelo computador Analisará o código e converterá as variáveis para os tipos entendidos pelo computador , com suas respectivas formas de representação e manipulação Tipo Lógico Este tipo permite a utilização de variáveis que possuem apenas dois valores para a representação, FALSO (representado por 0) e VERDADEIRO (representado por 1). 6.2 Representação do Tipo Numérico numérico ponto fixo sinal e magnitude complemento a 1 complemeto a 2 ponto flutuante Um dos primeiros problemas ocorridos na escolha da representação de números para computadores foi a representação do sinal do número. Isso foi resolvido com o acréscimo de mais um bit na representação do número; esse bit adicional indica o sinal do número. A convenção universal é a seguinte: se o valor do número é positivo, então o bit de sinal é igual a zero; se o valor do número é negativo, então o bit de sinal é igual a 1. Valor decimal Valor Binário + 12 0 1100 - 12 1 1100 - 47 1 00101111 Outro problema de relevância, reside na forma de representação de números fracionários, devido à dificuldade de representar a vírgula internamente, entre a posição de dois bits. A solução está na escolha do modo de representação: em ponto fixo (método que assume uma posição fixa para a vírgula decimal e é utilizado apenas para representar números inteiros) ou em ponto flutuante. Representação Sinal e magnitude : Uma quantidade pré-determinada de bits armazena o valor absoluto do número (magnitude) e o bit mais a esquerda representa o sinal (1 para negativo e 0 para positivo). Sinal Magnitude A representação por sinal e magnitude possui duas representações para o zero (00000 e 10000) e seria preciso um circuito lógico específico para evitar erros de má interpretação. Os fabricantes de computadores não utilizam esta representação devido aos problemas de implantação da ULA (Unidade Lógica e Aritmética) e custo (necessidade de construção de dois elementos, um para efetuar somas e outro para efetuar subtrações) e velocidade (perda de tempo gasto com manipulação dos sinais). exemplos de sinal e magnitude com 8 bits: -2 10000010 -1 10000001 0 10000000 duas representações 0 00000000 para o zero 1 00000001 2 00000010 Representação de números negativos em complemento: Complemento a dois (Complemento a base) - Em matemática, o termo complemento significa a quantidade que falta para “completar” um valor, torná-lo completo. Por exemplo, o complemento de um ângulo agudo é o valor de graus que precisa ser adicionado ao ângulo para se obter 90° , considerando o angulo de 90° completo. O complemento a 2 é uma forma de representação dos números inteiros negativos, uma maneira de evitar os inconvenientes da representação sinal e magnitude. Cálculo do Complemento a 2 (C2_N) - inverte-se o valor de cada algarismo do número N (onde for 1 passa a ser 0, ou vice-versa) e soma-se a ele 1. Exemplo: N = 00 C2_ de _N = + 1 = Cálculo do Complemento a 1 (Complemento a base menos um) - Proceder como no complemento à base, porém sem somar um ao resultado da inversão dos bits. Vantagens de se trabalhar com a representação em complemento : Possui uma única representação para o zero e Necessita de um único circuito somador para realizar não só operações de soma como também operações de subtração (mais barato). Exemplos de conversão: 6 = 0001102 C1 111001 C2 111001+1 = 111010 10 = 0010102 C1 110101 C2 110101+1 = 110110 Representação em ponto flutuante Na maioria dos cálculos de Engenharia, Física, Astronomia etc., os dados são números de valores muito grande, como a massa da Terra, ou então muito pequenos, como a massa do elétron. Se esses números tivessem que ser representados em ponto fixo, seria necessário utilizar uma grande quantidade de algarismos, muito mais do que a ULA de qualquer computador moderno pode trabalhar. Na verdade, a grande maioria dos algarismos seria de valor igual a zero. Exemplo: Se N1 = 0,000000000073 e N2 = 0,0000000001234 então S = N1 + N2 = 0,0000000001307 A solução para esse problema consiste em usar a representação comumente conhecida em Matemática como notação científica., que em computação chamamos de ponto flutuante. Esta representação é utilizada para todos os valores fracionários. Um número em notação científica é representado por um produto de dois fatores: N= N = número que se deseja representar; F = parte fracionária ou mantissa; B = base de exponenciação (nosso interesse maior recai sobre a base 2); E = valor do expoente (a representação do expoente é definida pelo fabricante do processador) Na representação em ponto flutuante, dois fatores são basicamente considerados: • precisão do número - indicada pela quantidade de algarismos da matissa; • grandeza do número - indicada pelo valor do expoente. A precisão mede a exatidão do número: 3,14 ou 3,1416 ou 3,141592 ... e a grandeza indica quão grande ou quão pequeno é o número que se deseja representar. O valor do campo expoente em ponto flutuante mostra a faixa de grandeza dos números naquela representação. Por exemplo, se em uma representação em ponto flutuante o campo expoente possui 6 algarismos (5 bits para o valor do expoente e 1 bit para o sinal), isso significa que teremos disponíveis para representar números tão pequenos quanto e tão grandes quanto . Isto é, uma faixa de representação com valores. Representação em notação científica: 0,754 x 10-4 expoente mantissa 0,0000754 = 0,754 x 10-4 = 7,54 x 10-5 vírgula deslocada 4 posições à direita (-) vírgula deslocada 5 posições à direita (-) 148000000 = 0,148 x 10+9 = 148,0 x 10+6 = 148000000,0 vírgula deslocada 9 posições à esquerda (+) vírgula deslocada 6 posições à esquerda (+) Representação Normalizada: Para evitar diferentes interpretações do sistema de representação em ponto flutuante, costuma-se estabelecer uma padronização, denominada representação normalizada. Na forma normalizada, a mantissa é definida sempre como sendo um valor M que satisfaça a seguinte expressão: 1/B M < 1 (exceto se M =0). Na prática, essa definição pode ser substituída pelos seguintes passos: • A mantissa deve ser sempre fracionária (M é sempre menor que 1); • O primeiro algarismo após a vírgula tem que ser diferente de zero ( porque é igual ou maior que 1/B).Como a base de trabalho dos computadores é 2, então o 1° algarismo apóso zero será sempre 1. 0,000245010 = 0,245 x 10-3 101110000,002 = 0,10111 x 2+9 O formato típico de um número em ponto-flutuante de uma máquina que trabalha com registradores de 32 bits é: S Expoente Mantissa 1bit 7bits 24bits Total = 32bits Conversão de Números Para Ponto Flutuante: 1 0101101 101100000000000000000000 Expoente Sinal Mantissa Sinal: Representa o sinal do número, 1 bit Expoente: o expoente incluindo se sinal, nos nossos exemplos terá 7 bits e será representado em S&M Mantissa: a Mantissa em nossos exemplos terá 24 bits Exemplo 1: Numero 407,375 converter para base 2: Divisão Resultado resto mutiplicação resultado parte inteira 407/2 203 1 0,375x2 0,75 0 203/2 101 1 0,75x2 1,5 1 101/2 50 1 0,5x2 1,0 1 50/2 25 0 0,0x2 0,0 0 25/2 12 1 12/2 6 0 6/2 3 0 3/2 1 1 ½ 0 1 110010111,011 Normalizar: 0,110010111011 x 2+9 Mantissa: 24 bits, 110010111011000000000000 Expoente: +9, em S&M com 7 bits = 0001001 Sinal: 0 0 0001001 110010111011000000000000 Exemplo 2: Numero -0,078125 converter para base 2: Mutiplicação resultado parte inteira 0,078125x2 0,15625 0 0,15625x2 0,3125 0 0,3125x2 0,625 0 0,625x2 1,25 1 0,25x2 0,5 0 0,5x2 1 1 0,0x2 0 0 0,000101 Normalizar: 0,101 x 2-3 Mantissa: 24 bits, 101000000000000000000000 Expoente: -3, em S&M com 7 bits = 1000011 Sinal: 1 1 1000011 101000000000000000000000 Exemplo 3: Ache o valor decimal equivalente à representação em ponto flutuante 04D0000016 04D0000016 = 0000 0100 1101 0000 0000 0000 0000 0000 2 sinal= 0 expoente = 0000100 mantissa = 110100000000000000000000 0,1101 x 2+4 = 1101,00 = 1310 7
Compartilhar