Representação de Números

1.993 visualizações

Publicada em

Publicada em: Tecnologia, Negócios
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.993
No SlideShare
0
A partir de incorporações
0
Número de incorporações
6
Ações
Compartilhamentos
0
Downloads
24
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Representação de Números

  1. 1. AC − Arquitetura de Computadores Aula 2 − Representação de Números 2001 Mário O. de Menezes http://www.tf.ipen.br/~mario AC − Repres. Números p. Mario 2001 1 Sumário ° Representação do computador das quot;Coisasquot; ° Números sem sinal Unsigned ° Computadores trabalhando ° Números com sinal Signed: busca por uma boa representação ° Atalhos ° Conclusão AC − Repres. Números p. Mario 2001 2
  2. 2. O que os computadores fazem? ° Computadores manipulam representações de coisas! ° O que se pode representar com N bits? 2N coisas!   ° Quais coisas?   Números! Caracteres! Pixels! Dolars! Posição! Instrucões! ...   Depende de quais operações se faz sobre eles AC − Repres. Números p. Mario 2001 3 Números Decimais: Base 10 ° Digitos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ° Exemplo: 3271 = (3x103) + (2x102) + (7x101) + (1x100) AC − Repres. Números p. Mario 2001 4
  3. 3. Números: notação posicional ° Número Base B => B símbolos por dígito:   Base 10 (Decimal): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Base 2 (Binário): 0, 1 ° Representação do Número:   d31d30 ... d2d1d0 é um número de 32 dígitos   valor = d31x B31 + d30 x B30 + ... + d2 x B2 + d1 x B1 + d0 x B0 ° Binário: 0,1 1011010 = 1x26 + 0x25 + 1x24 + 1x23 + 0x22 + 1x2 + 0x1 = 64 + 16   + 8 + 2 = 90   Note que um número binário de 7 dígitos se transforma em um número decimal de 2 dígitos.   Existe uma base que converte facilmente para números binários? AC − Repres. Números p. Mario 2001 5 Números Hexadecimais: Base 16 ° Hexadecimal: 0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F   Dígitos Normais + 6 mais: tomados do alfabeto ° Conversão: Binário <−> Hex   1 dígito hex representa 16 valores decimais   4 dígitos binários representam 16 valores decimal => 1 dígito hex substituti 4 dígitos binários ° Exemplos:   1010 1100 0101 (binary) = ? (hex)   10111 (binary) = 0001 0111 (binary) = ?   3F9(hex) = ? (binary) AC − Repres. Números p. Mario 2001 6
  4. 4. Decimal vs. Hexadecimal vs.Binário 00 0 0000 ♦Exemplos: 01 1 0001 ♦1010 1100 0101 (binary) 02 2 0010 = AC5 (hex) 03 3 0011 04 4 0100 05 5 0101 ♦10111 (binary) 06 6 0110 = 0001 0111 (binary) 07 7 0111 = 17 (hex) 08 8 1000 09 9 1001 10 A 1010 ♦3F9(hex) 11 B 1011 = 11 1111 1001 (binary) 12 C 1100 13 D 1101 14 E 1110 15 F 1111 AC − Repres. Números p. Mario 2001 7 O que fazer com as representações de números? ° Exatamente o que fazemos com números! • Somá−los 1 1 • Subtraí−los 1 0 1 0 • Multiplicá−los • Dividi−los + 0 1 1 1 • Compará−los −−−−−−−−−−−−−−−− ° Exemplo: 10 + 7 = 17 1 0 0 0 1 • Tão simples somar em binário que podemos fazer circuitos para fazê−lo • Subtração também exatamente como se faz em decimal AC − Repres. Números p. Mario 2001 8
  5. 5. Comparação ° Como dizer se X > Y? ° Veja se X− Y > 0 AC − Repres. Números p. Mario 2001 9 Qual base nós utilizamos? ° Decimal: bom para humanos, especialmente para fazer aritmética ° 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   Terrível para aritmética; just say no ° Binário: o que computadores usam; aprender como os computadores fazem +,−,*,/   Para um computador, números sempre binários   Não importa como o número é escrito: 3210 == 0x20 == 1000002 ¡ ¢ ¡ ¢ ¡ ¢   Use subscritos dez , hex , dois no texto, slides, etc quando puder confundir AC − Repres. Números p. Mario 2001 10
  6. 6. Limites dos Números do Computador ° Bits podem representar qualquer coisa! ° Caracteres?   26 letras => 5 bits   maisc./minusc. + pontuação ¡ ¢ => 7 bits (em 8) ( ascii )   Código padrão para atender todas as linguagens do mundo => 16 bits (unicode) ° Valores lógicos?   0 −> Falso, 1 => Verdadeiro ° cores ? ° localizações / endereços? comandos? ° Mas N bits => somente 2N coisas AC − Repres. Números p. Mario 2001 11 Como representar números negativos? ° Até agora, números sem sinal unsigned ° Solução óbvia: definir o bit mais à esquerda para ser o sinal!   0 => +, 1 => −   Resto dos bits podem ser valores numéricos do número ° Representação chamada sign and magnitude ° MIPS usa inteiros de 32−bit +1dez seria: 0000 0000 0000 0000 0000 0000 0000 0001 ° E − 1dez em sign and magnitude would be: 1000 0000 0000 0000 0000 0000 0000 0001 AC − Repres. Números p. Mario 2001 12
  7. 7. Problemas da sign and magnitude? ° Circuito Aritmético mais complicado   Passos especiais dependendo se os sinais são os mesmos ou não ° Ainda, dois zeros   0x00000000 = +0dez   0x80000000 = −0dez   O que significaria para a programação? ° Sign and magnitude abandonada AC − Repres. Números p. Mario 2001 13 Outra tentativa: complementar os bits ° Exemplo: 710 = 001112 −710 = 110002 ° Chamada complemento de um ° Nota: números positivos tem 0s na frente, números negativos tem 1s. 00000 00001 ... 01111 10000 ... 11110 11111 ° O que é −00000 ? ° Quantos números positivos em N bits? ° Quantos negativos? AC − Repres. Números p. Mario 2001 14
  8. 8. Problemas do complemento de um ° Aritmética não muito difícil ° Ainda dois zeros   0x00000000 = +0dez   0xFFFFFFFF = −0dez   O que significaria para a programação? ° Complemento de um abandonado porque outra solução foi melhor AC − Repres. Números p. Mario 2001 15 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 AC − Repres. Números p. Mario 2001 16
  9. 9. ¤ quot;Linhaquot; dos Números Complemento de 2 s 00000 00001 11111 11110 00010 ° 2 N−1 não negativos −1 0 1 11101 −2 2 ° 2 N−1 negativos 11100 −3 ° um zero −4 . . ° Quantos positivos? . . ° Overflow? . . −15−16 15 10001 10000 01111 AC − Repres. Números p. Mario 2001 17 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 1111 1111 1111dois = −1dez ¡ ¢ ° Um zero, 1° bit chamado bit de sinal , um negavito extra , não há 2,147,483,648dez p. AC − Repres. Números Mario 2001 18
  10. 10. Fórmula do Complemento de Dois ° Pode representar números positivos e negativos em termos do valor do bit vez uma potência de 2: d31 x −231 + d30 x 230 + ... + d2 x 22 + d1 x 21 + d0 x 20   ° 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 ° Nota: deve−se especificar a largura: nós usamos 32 bits AC − Repres. Números p. Mario 2001 19 Atalho do complemento de dois: Negação ° Inverter cada 0 para 1 e cada 1 para 0, então somar 1 ao resultado   Soma de um número seu complemento de um deve ser 111...111dois   111...111dois= −1dez ¥   Seja x a representação invertida de x Então x + x = −1 ⇒ x + x + 1 = 0 ⇒ x + 1 = −x ¥ ¥ ¥   ° 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 AC − Repres. Números p. Mario 2001 20
  11. 11. 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 AC − Repres. Números p. Mario 2001 21 Números com Sinal vs. Números sem Sinal ° Declaração C int   Declara um número com sinal   Usa complemento de dois ° Declaração C unsigned int   Declara um número sem sinal   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 ° X = 1111 1111 1111 1111 1111 1111 1111 1100dois ° Y = 0011 1011 1001 1010 1000 1010 0000 0000dois ° É X > Y?   Sem sinal: SIM   Com sinal: NãO AC − Repres. Números p. Mario 2001 22
  12. 12. Números são armazenados em endereços 00000 ° Memória é um lugar para armazenar bits ° Uma palavra é um número fixo 101101100110 01110 de bits (e.g., 32) em um endereço. ° Endereços são naturalmente representados como número sem sinal 11111 = 2k − 1 AC − Repres. Números p. Mario 2001 23 E se o número for muito grande? ° Os padrões de bits acima são apenas representações de números ° 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 ° 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 11110 11111 unsigned AC − Repres. Números p. Mario 2001 24
  13. 13. Conclusão ° Nós representamos quot;coisasquot; no computador como padrões particulares de bits: N bits =>2N   números, caracteres, ... ° Decimal para cálculos humanos, binário para entender computadores, hex para entender binário ° Complemento de 2 é universal em computação: não pode ser evitado, então aprenda ° Operações no Computador sobre as representações de números correspondem as operações reais sobre as coisas reais. ° Overflow: números são infinitos mas os computadores são finitos, assim erros podem ocorrer AC − Repres. Números p. Mario 2001 25

×