13
AC - Repres. Números p. 1 Mario 2001 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. 2 Mario 2001 Sumário ° Representação do computador das "Coisas" ° Números sem sinal Unsigned ° Computadores trabalhando ° Números com sinal Signed: busca por uma boa representação ° Atalhos ° Conclusão

Representação de Números

Embed Size (px)

Citation preview

Page 1: Representação de Números

AC − Repres. Números p.1

Mario 2001

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.2

Mario 2001

Sumário

° Representação do computador das "Coisas"

° Números sem sinal Unsigned

° Computadores trabalhando

° Números com sinal Signed: busca por uma boa representação

° Atalhos

° Conclusão

Page 2: Representação de Números

AC − Repres. Números p.3

Mario 2001

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.4

Mario 2001

Números Decimais: Base 10

° Digitos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

° Exemplo:

3271 =

(3x103) + (2x102) + (7x101) + (1x100)

Page 3: Representação de Números

AC − Repres. Números p.5

Mario 2001

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

Mario 2001

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)

Page 4: Representação de Números

AC − Repres. Números p.7

Mario 2001

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 000001 1 000102 2 001003 3 001104 4 010005 5 010106 6 011007 7 011108 8 100009 9 100110 A 101011 B 101112 C 110013 D 110114 E 111015 F 1111

AC − Repres. Números p.8

Mario 2001

O que fazer com as representações de números?° Exatamente o que fazemos com números!

• Somá−los

• Subtraí−los

• Multiplicá−los

• Dividi−los

• Compará−los

° 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

Page 5: Representação de Números

AC − Repres. Números p.9

Mario 2001

Comparação

° Como dizer se X > Y?

° Veja se X− Y > 0

AC − Repres. Números p.10

Mario 2001

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

Page 6: Representação de Números

AC − Repres. Números p.11

Mario 2001

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.12

Mario 2001

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

Page 7: Representação de Números

AC − Repres. Números p.13

Mario 2001

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.14

Mario 2001

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

111111111010000 ...

° O que é −00000 ?

° Quantos números positivos em N bits?

° Quantos negativos?

Page 8: Representação de Números

AC − Repres. Números p.15

Mario 2001

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.16

Mario 2001

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

Page 9: Representação de Números

AC − Repres. Números p.17

Mario 2001

"Linha" dos Números Complemento de 2�

s

° 2 N−1 não negativos

° 2 N−1 negativos

° um zero

° Quantos positivos?

° Overflow?

00000 0000100010

1111111110

10000 0111110001

0 12

−1−2

−15−16 15

.

.

.

.

.

.

−311101

−411100

AC − Repres. Números p.18

Mario 2001

Complemento de Dois 0000 ... 0000 0000 0000 0000dois = 0dez

0000 ... 0000 0000 0000 0001dois = 1dez0000 ... 0000 0000 0000 0010dois = 2dez. . .0111 ... 1111 1111 1111 1101dois = 2,147,483,645dez0111 ... 1111 1111 1111 1110dois = 2,147,483,646dez0111 ... 1111 1111 1111 1111dois = 2,147,483,647dez1000 ... 0000 0000 0000 0000dois = −2,147,483,648dez1000 ... 0000 0000 0000 0001dois = −2,147,483,647dez1000 ... 0000 0000 0000 0010dois = −2,147,483,646dez. . . 1111 ... 1111 1111 1111 1101dois = −3dez1111 ... 1111 1111 1111 1110dois = −2dez1111 ... 1111 1111 1111 1111dois = −1dez

° Um zero, 1° bit chamado bit de sinal , um negavito �

extra�

, não há 2,147,483,648dez

Page 10: Representação de Números

AC − Repres. Números p.19

Mario 2001

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

° Exemplo1111 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.20

Mario 2001

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 −4x : 1111 1111 1111 1111 1111 1111 1111 1100doisx

: 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

Page 11: Representação de Números

AC − Repres. Números p.21

Mario 2001

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.22

Mario 2001

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

Page 12: Representação de Números

AC − Repres. Números p.23

Mario 2001

Números são armazenados em endereços

° Memória é um lugar para armazenar bits

° Uma palavra é um número fixo de bits (e.g., 32) em um endereço.

° Endereços são naturalmente representados como número sem sinal

101101100110

00000

11111 = 2k − 1

01110

AC − Repres. Números p.24

Mario 2001

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 1111111110

unsigned

Page 13: Representação de Números

AC − Repres. Números p.25

Mario 2001

Conclusão

° Nós representamos "coisas" 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