Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 OAC – Ling. de Máquina – Representação de Números - 1 Juliana F Camapum Wanderley Organização e Arquitetura de Computadores Aula 8 – Representação de Números 2002 Juliana F. Camapum Wanderley http://www.cic.unb.br/docentes/juliana/cursos/oac OAC – Ling. de Máquina – Representação de Números - 2 Juliana F Camapum Wanderley Sumário n Representação do computador das "Coisas" n Números sem sinal Unsigned n Computadores trabalhando n Números com sinal Signed: busca por uma boa representação n Atalhos n Conclusão 2 OAC – Ling. de Máquina – Representação de Números - 3 Juliana F Camapum Wanderley O que os computadores fazem? n Computadores manipulam representações de coisas! n O que se pode representar com N bits? n 2N coisas! n Quais coisas? n Números! Caracteres! Pixels! Dólares! Posição! Instruções! ... n Depende de quais operações se faz sobre eles OAC – Ling. de Máquina – Representação de Números - 4 Juliana F Camapum Wanderley Números Decimais: Base 10 n Dígitos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 n Exemplo: 3271 = (3x103) + (2x102) + (7x101) + (1x100) 3 OAC – Ling. de Máquina – Representação de Números - 5 Juliana F Camapum Wanderley Números: notação posicional n Número Base B => B símbolos por dígito: n Base 10 (Decimal): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Base 2 (Binário): 0, 1 n Representação do Número: n d31d30 ... d2d1d0 é um número de 32 dígitos n valor = d31x B31 + d30 x B30 + ... + d2 x B2 + d1 x B1 + d0 x B0 n Binário: 0,1 n 1011010 = 1x26 + 0x25 + 1x24 + 1x23 + 0x22 + 1x2 + 0x1 = 64 + 16 + 8 + 2 = 90 n Note que um número binário de 7 dígitos se transforma em um número decimal de 2 dígitos. n Existe uma base que converte facilmente para números binários? OAC – Ling. de Máquina – Representação de Números - 6 Juliana F Camapum Wanderley Números Hexadecimais: Base 16 n Hexadecimal: 0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F n Dígitos Normais + 6 mais: tomados do alfabeto n Conversão: Binário <-> Hex n 1 dígito hex representa 16 valores decimais n 4 dígitos binários representam 16 valores decimal => 1 dígito hex substitui 4 dígitos binários n Exemplos: n 1010 1100 0101 (binary) = ? (hex) n 10111 (binary) = 0001 0111 (binary) = ? n 3F9(hex) = ? (binary) 4 OAC – Ling. de Máquina – Representação de Números - 7 Juliana F Camapum Wanderley Decimal vs. Hexadecimal vs.Binário ¨Exemplos: ¨1010 1100 0101 (binary) = AC5 (hex) ¨10111 (binary) = 0001 0111 (binary) = 17 (hex) ¨3F9(hex) = 11 1111 1001 (binary) 00 0 0000 01 1 0001 02 2 0010 03 3 0011 04 4 0100 05 5 0101 06 6 0110 07 7 0111 08 8 1000 09 9 1001 10 A 1010 11 B 1011 12 C 1100 13 D 1101 14 E 1110 15 F 1111 OAC – Ling. de Máquina – Representação de Números - 8 Juliana F Camapum Wanderley O que fazer com as representações de números? n Exatamente o que fazemos com números! · Somá-los · Subtraí-los · Multiplicá-los · Dividi-los · Compará-los n Exemplo: 10 + 7 = 17 · Tão simples somar em binário que podemos fazer circuitos para fazê-lo · Subtração também exatamente como se faz em decimal 1 0 1 0 + 0 1 1 1 ---------------- 1 0 0 0 1 11 5 OAC – Ling. de Máquina – Representação de Números - 9 Juliana F Camapum Wanderley Comparação n Como dizer se X > Y? n Veja se X- Y > 0 OAC – Ling. de Máquina – Representação de Números - 10 Juliana F Camapum Wanderley Qual base nós utilizamos? n Decimal: bom para humanos, especialmente para fazer aritmética n Hex: ao olhar para uma string longa de números binários, é muito mais fácil converter para hex e olhar 4 bits/símbolo n Terrível para aritmética; just say no n Binário: o que computadores usam; aprender como os computadores fazem +,-,*,/ n Para um computador, números sempre binários n Não importa como o número é escrito: 3210 == 0x20 == 1000002 n Use subscritos “dez”, “hex”, “dois” no texto, slides, etc quando puder confundir 6 OAC – Ling. de Máquina – Representação de Números - 11 Juliana F Camapum Wanderley Limites dos Números do Computador n Bits podem representar qualquer coisa! n Caracteres? n 26 letras => 5 bits n maisc./minusc. + pontuação => 7 bits (em 8) (“ascii”) n Código padrão para atender todas as linguagens do mundo => 16 bits (unicode) n Valores lógicos? n 0 -> Falso, 1 => Verdadeiro n cores ? n localizações / endereços? comandos? n Mas N bits => somente 2N coisas OAC – Ling. de Máquina – Representação de Números - 12 Juliana F Camapum Wanderley Como representar números negativos? n Até agora, números sem sinal unsigned n Solução óbvia: definir o bit mais à esquerda para ser o sinal! n 0 => +, 1 => - n Resto dos bits podem ser valores numéricos do número n Representação chamada sign and magnitude n MIPS usa inteiros de 32-bit +1dez seria: 0000 0000 0000 0000 0000 0000 0000 0001 n E - 1dez em sign and magnitude seria: 1000 0000 0000 0000 0000 0000 0000 0001 7 OAC – Ling. de Máquina – Representação de Números - 13 Juliana F Camapum Wanderley Problemas da sign and magnitude? n Circuito Aritmético mais complicado n Passos especiais dependendo se os sinais são os mesmos ou não n Ainda, dois zeros n 0x00000000 = +0dez n 0x80000000 = -0dez n O que significaria para a programação? n Sign and magnitude abandonada OAC – Ling. de Máquina – Representação de Números - 14 Juliana F Camapum Wanderley Outra tentativa: complementar os bits n Exemplo: 710 = 001112 -710 = 110002 n Chamada complemento de um n Nota: números positivos tem 0s na frente, números negativos tem 1s. 00000 00001 01111... 111111111010000 ... ° O que é -00000 ? ° Quantos números positivos em N bits? ° Quantos negativos? 8 OAC – Ling. de Máquina – Representação de Números - 15 Juliana F Camapum Wanderley Problemas do complemento de um n Aritmética não muito difícil n Ainda dois zeros n 0x00000000 = +0dez n 0xFFFFFFFF = -0dez n O que significaria para a programação? n Complemento de um abandonado porque outra solução foi melhor OAC – Ling. de Máquina – Representação de Números - 16 Juliana F Camapum Wanderley Busca por Representação do Número Negativo ¨ Qual é o resultado para números sem sinal se tentamos subtrair um número grande de um pequeno? · Tentaria pegar da string de 0s da frente de modo que o resultado seria uma string de 1s na frente - 3 - 4 => ...0011 - ...0100 = ...1111 · Na falta de uma alternativa melhor, escolher a representação que faz o hardware simples. · Como com o complemento de um, 0s a frente => positivo, 1s a frente => negativo - 000000...xxx é >=0 - 111111...xxx é < 0 - exceto ...1111 é -1 não zero ¨ Complemento de dois 9 OAC – Ling. de Máquina – Representação de Números - 17 Juliana F Camapum Wanderley "Linha" dos Números Complemento de 2´s n 2 N-1 não negativos n 2 N-1 negativos n um zero n Quantos positivos? n Overflow? 00000 00001 00010 11111 11110 10000 0111110001 0 1 2 -1 -2 -15 -16 15 . . . . . . -3 11101 -411100 OAC – Ling. de Máquina – Representação de Números - 18 Juliana F Camapum Wanderley Complemento de Dois 0000 ... 0000 0000 0000 0000dois = 0dez 0000 ... 0000 0000 0000 0001dois = 1dez 0000 ... 0000 0000 0000 0010dois = 2dez . . . 0111 ... 1111 1111 1111 1101dois = 2.147.483.645dez 0111 ... 1111 1111 1111 1110dois = 2.147.483.646dez 0111 ... 1111 1111 1111 1111dois = 2.147.483.647dez 1000 ... 0000 0000 0000 0000dois = -2.147.483.648dez 1000 ... 0000 0000 0000 0001dois = -2.147.483.647dez 1000 ... 0000 0000 0000 0010dois = -2.147.483.646dez . . . 1111 ... 1111 1111 1111 1101dois = -3dez 1111 ... 1111 1111 1111 1110dois = -2dez 1111 ... 1111 11111111 1111dois = -1dez n Um zero, 1° bit chamado bit de sinal , um negativo “extra”, não há 2.147.483.648dez 10 OAC – Ling. de Máquina – Representação de Números - 19 Juliana F Camapum Wanderley Fórmula do Complemento de Dois n Pode representar números positivos e negativos em termos do valor do bit vez uma potência de 2: n d31 x -231 + d30 x 230 + ... + d2 x 22 + d1 x 21 + d0 x 20 n Exemplo 1111 1111 1111 1111 1111 1111 1111 1100dois = 1x-231 +1x230 +1x229+... +1x22+0x21+0x20 = -231 + 230 + 229 + ... + 22 + 0 + 0 = -2.147.483.648dez + 2.147.483.644dez = -4dez n Nota: deve-se especificar a largura: nós usamos 32 bits OAC – Ling. de Máquina – Representação de Números - 20 Juliana F Camapum Wanderley Atalho do complemento de dois: Negação n Inverter cada 0 para 1 e cada 1 para 0, então somar 1 ao resultado n Soma de um número seu complemento de um deve ser 111...111dois n 111...111dois= -1dez n Seja x´ a representação invertida de x n Então x + x´ = -1 => x + x´ + 1 = 0 => x´ + 1 = -x n Exemplo: -4 para +4 para -4 x : 1111 1111 1111 1111 1111 1111 1111 1100dois x´: 0000 0000 0000 0000 0000 0000 0000 0011dois +1: 0000 0000 0000 0000 0000 0000 0000 0100dois ()´: 1111 1111 1111 1111 1111 1111 1111 1011dois +1: 1111 1111 1111 1111 1111 1111 1111 1100dois 11 OAC – Ling. de Máquina – Representação de Números - 21 Juliana F Camapum Wanderley Atalho do compl. de dois: extensão do sinal ¨ Converter número em complemento de 2 usando n bits para mais de n bits ¨ Simplesmente repetir o bit mais significante (bit de sinal) do menor para preencher os novos bits · Complemento de 2 positivo tem infinitos 0s · Complemento de 2 negativo tem infinitos 1s. · Representação de bit esconde os bits a frente; extensão de sinal restaura alguns deles · 16-bit -4dez para 32-bit: 1111 1111 1111 1100dois 1111 1111 1111 1111 1111 1111 1111 1100dois OAC – Ling. de Máquina – Representação de Números - 22 Juliana F Camapum Wanderley Números com Sinal vs. Números sem Sinal n Declaração C int n Declara um número com sinal n Usa complemento de dois n Declaração C unsigned int n Declara um número sem sinal n Trata números 32 bits como inteiros sem sinal, de modo que o bit mais significante é parte do número, não um bit de sinal n X = 1111 1111 1111 1111 1111 1111 1111 1100dois n Y = 0011 1011 1001 1010 1000 1010 0000 0000dois n É X > Y? n Sem sinal: SIM n Com sinal: NãO 12 OAC – Ling. de Máquina – Representação de Números - 23 Juliana F Camapum Wanderley Números são armazenados em endereços n Memória é um lugar para armazenar bits n Uma palavra é um número fixo de bits (e.g., 32) em um endereço. n Endereços são naturalmente representados como número sem sinal 101101100110 00000 11111 = 2k - 1 01110 OAC – Ling. de Máquina – Representação de Números - 24 Juliana F Camapum Wanderley E se o número for muito grande? n Os padrões de bits acima são apenas representações de números n Os números realmente tem um número infinito de dígitos · Com quase todos sendo os mesmos exceto por alguns poucos mais à direita · Simplesmente não mostre normalmente os dígitos à frente n Se o resultado de somar (-, *, /) não pode ser representado por estes bits de HW mais à direita, acontece o que é conhecido como overflow 00000 00001 00010 1111111110 unsigned 13 OAC – Ling. de Máquina – Representação de Números - 25 Juliana F Camapum Wanderley Conclusão n Nós representamos "coisas" no computador como padrões particulares de bits: N bits =>2N n números, caracteres, ... n Decimal para cálculos humanos, binário para entender computadores, hex para entender binário n Complemento de 2 é universal em computação: não pode ser evitado, então aprenda n Operações no Computador sobre as representações de números correspondem as operações reais sobre as coisas reais. n Overflow: números são infinitos mas os computadores são finitos, assim erros podem ocorrer
Compartilhar