Você está na página 1de 13

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 - 1 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

OAC – Ling. de Máquina – Representação de Números - 2 Juliana F Camapum Wanderley

1
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 - 3 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)

OAC – Ling. de Máquina – Representação de Números - 4 Juliana F Camapum Wanderley

2
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 ... d 2d1d0 é um número de 32 dígitos
n valor = d31x B31 + d30 x B30 + ... + d2 x B2 + d 1 x B1 + d0 x B0
n Binário: 0,1
n 1011010 = 1x2 6 + 0x2 5 + 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 - 5 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)
OAC – Ling. de Máquina – Representação de Números - 6 Juliana F Camapum Wanderley

3
Decimal vs. Hexadecimal vs.Binário
00 0 0000
♦ Exemplos: 01 1 0001
02 2 0010
♦ 1010 1100 0101 (binary)
03 3 0011
= AC5 (hex) 04 4 0100
05 5 0101
♦10111 (binary) 06 6 0110
07 7 0111
= 0001 0111 (binary) 08 8 1000
= 17 (hex) 09 9 1001
10 A 1010
11 B 1011
♦3F9(hex) 12 C 1100
= 11 1111 1001 (binary) 13 D 1101
14 E 1110
15 F 1111
OAC – Ling. de Máquina – Representação de Números - 7 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 1 1
• Multiplicá-los 1 0 1 0
• Dividi-los
+ 0 1 1 1
• Compará-los
----------------
n 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
OAC – Ling. de Máquina – Representação de Números - 8 Juliana F Camapum Wanderley

4
Comparação

n Como dizer se X > Y?


n Veja se X- Y > 0

OAC – Ling. de Máquina – Representação de Números - 9 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
OAC – Ling. de Máquina – Representação de Números - 10 Juliana F Camapum Wanderley

5
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 - 11 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
OAC – Ling. de Máquina – Representação de Números - 12 Juliana F Camapum Wanderley

6
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 - 13 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

10000 ... 11110 11111

° O que é -00000 ?
° Quantos números positivos em N bits?
° Quantos negativos?
OAC – Ling. de Máquina – Representação de Números - 14 Juliana F Camapum Wanderley

7
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 - 15 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
OAC – Ling. de Máquina – Representação de Números - 16 Juliana F Camapum Wanderley

8
"Linha" dos Números Complemento de 2´s

11111
00000 00001 n 2 N-1 não
11110 00010 negativos
-1 0 1
11101 -2 2 n 2 N-1 negativos
11100 -3
.
-4 n um zero
.
. . n Quantos
. . positivos?

-15 -16 15
n Overflow?

10001 10000 01111

OAC – Ling. de Máquina – Representação de Números - 17 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 1111 1111 1111dois = -1dez
n Um zero, 1° bit chamado bit de sinal , um negativo “extra”, não há
2.147.483.648dez
OAC – Ling. de Máquina – Representação de Números - 18 Juliana F Camapum Wanderley

9
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 + d 1 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 - 19 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
OAC – Ling. de Máquina – Representação de Números - 20 Juliana F Camapum Wanderley

10
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 - 21 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
OAC – Ling. de Máquina – Representação de Números - 22 Juliana F Camapum Wanderley

11
Números são armazenados em endereços
n Memória é um lugar para
00000 armazenar bits
n Uma palavra é um número
101101100110 01110 fixo de bits (e.g., 32) em um
endereço.
n Endereços são naturalmente
representados como número
11111 = 2k - 1
sem sinal

OAC – Ling. de Máquina – Representação de Números - 23 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 11110 11111
unsigned
OAC – Ling. de Máquina – Representação de Números - 24 Juliana F Camapum Wanderley

12
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
OAC – Ling. de Máquina – Representação de Números - 25 Juliana F Camapum Wanderley

13

Você também pode gostar