Aula 7: Representações de Números Inteiros: Sinal e...

33
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aula 7: Representações de Números Inteiros: Sinal e Magnitude e Representação em Excesso de k Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 1 / 33

Transcript of Aula 7: Representações de Números Inteiros: Sinal e...

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Aula 7: Representações de Números Inteiros: Sinal e Magnitude eRepresentação em Excesso de k

Diego Passos

Universidade Federal Fluminense

Fundamentos de Arquiteturas de Computadores

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 1 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Introdução

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 2 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Computadores e Números

Computadores modernos são, em sua enorme maioria, dispositivos digitais.▶ Representam sinais como conjuntos de símbolos discretos.

Mais que isso, computadores são normalmente binários.▶ Dois estados, e.g., tensão baixa ou tensão alta.

Nas últimas aulas, vimos como números podem ser representados em base 2.▶ Base numérica composta por dois símbolos (algarismos).▶ Também chamados de bits.

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 3 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Computadores e Números (II)

Como os computadores têm a capacidade de representar dois estados, podemos representarbits.

▶ Algarismos de números representados em base 2.Com uma sequência ordenada de bits, podemos representar números quaisquer.

▶ Desde que o número de bits disponível seja grande o suficiente.

Bit = 0

Bit = 1

10(10) = 1010(2) =

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 4 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Computadores e Números (III)

Note que por se tratar de circuitos eletrônicos, computadores usam um número fixo de bitspara representar números.

▶ Por exemplo, 8 bits, 16 bits, 32 bits.

Se um número tem menos algarismos binários, ele e complementado com zeros à esquerda.Exemplos com 8 bits:

▶ 200(10) = 11001000(2).▶ 100(10) = 01100100(2).▶ 50(10) = 00110010(2).

Por outro lado, isso limita o conjunto de números que podem ser representados.

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 5 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Computadores e Números (IV)

Se só precisamos representar números inteiros positivos, o problema estaria resolvido.▶ Cada bit é representado por um circuito eletrônico.▶ Estados do circuito são mapeados para um dos dois algarismos.

Mas na prática, problema é mais complicado:▶ O que fazer com os números negativos?▶ E com os números com parte fracionária não-nula?

Estes problemas serão solucionados através de esquemas de representação.

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 6 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Esquemas de Representação

Maneira padronizada de codificar informações usando apenas bits.▶ Valor que assume dois estados.

No caso dos números, permitem representar números negativos.▶ E, em alguns casos, números com parte fracionária.

Nesta disciplina, veremos 6:▶ Sinal e Magnitude.▶ Representação em Excesso.▶ Complemento a Um.▶ Complemento a Dois.▶ Representação em Ponto Fixo.▶ Representação em Ponto Flutuante.

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 7 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Esquemas de Representação (II)

Note que os computadores não usam os esquemas de representação apenas para armazenardados.Eles operam sobre os dados utilizando estas representações.

▶ Operações aritméticas, de comparação, . . . .

Por isso, a praticidade de operar sobre valores nestes esquemas de representação é umaqualidade importante.

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 8 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Sinal e Magnitude

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 9 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Ideia Básica

A representação por Sinal e Magnitude é provavelmente a mais intuitiva.Capaz de representar apenas números inteiros.

▶ Mas tanto positivos, quanto negativos.Ideia simples:

▶ Números são separados em duas componentes.⋆ Sinal.⋆ Magnitude (ou módulo, ou valor absoluto).

▶ Como o sinal assume dois estados (negativo e positivo), utiliza-se um bit para representá-lo.▶ Demais bits são usados para representar a magnitude.

⋆ Como se o número fosse positivo.

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 10 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Convenções em Sinal e Magnitude

Bit reservado para o sinal é sempre o mais significativo.▶ i.e., o mais à esquerda.

Em números positivos, esse bit é 0.Em números negativos, esse bit é 1.A magnitude é simplesmente representada em base 2 com n − 1 bits.

▶ Onde n é o número de bits usado pela máquina para representar números.

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 11 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Exemplos de Representação

Exemplos considerando 8 bits.

-37(10) = -100101(2)

Bits do Computador10100101

{Sinal Magnitude

+99(10) = +1100011(2)

Bits do Computador11000110

{Sinal Magnitude

No primeiro exemplo, repare como os bits de magnitude são completados com zeros àesquerda.

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 12 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Exercícios

Represente os seguintes valores em Sinal e Magnitude:▶ 19(10) com 6 bits.▶ −24(10) com 8 bits.▶ −24(8) com 8 bits.▶ 73(16) com 10 bits.

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 13 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Fazendo Contas com Sinal e Magnitude

Suponha que um computador deseje operar sobre dois números em Sinal e Magnitude.▶ Somar.▶ Subtrair.▶ Comparar.▶ . . .

Como isso deve ser feito?Considere uma soma, por exemplo.

▶ Não podemos simplesmente somar os dois números algarismo a algarismo.▶ Um dos “algarismos” é na verdade um sinal.

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 14 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Fazendo Contas com Sinal e Magnitude (II)

Embora “pareça” um algarismo, bit de sinal precisa ser tratado diferentemente.▶ Deve ser ignorado, ou só considerado antes ou depois da operação.

Exemplo para soma:▶ Se os bits de sinal dos dois números são iguais, separe as magnitudes e as some.

⋆ Bit de sinal do resultado é igual ao bit de sinal dos operandos.▶ Caso contrário, isole as magnitudes e subtraia a menor da maior.

⋆ Bit de sinal do resultado é igual ao bit de sinal do operando de maior magnitude.

1010101001010000+

10101010101000= +

11111010

1010010111000011+

10100101100001= +

00010111

01101000

01010101+

0101010

0110100= -

00101001

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 15 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Fazendo Contas com Sinal e Magnitude (III)

Outras operações podem ser realizadas de forma similar.▶ Para subtração, pode-se trocar o sinal do subtraendo (inverter bit de sinal) e executar mesmos

passos da soma.▶ Para divisão e multiplicação, opera-se apenas sobre a magnitude.

⋆ Se operandos têm mesmo sinal, resultado terá bit de sinal 0.⋆ Se operandos têm sinal diferente, resultado terá bit de sinal 1.

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 16 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Sinal e Magnitude: Limites

Suponha que tenhamos 8 bits para representar um número em Sinal e Magnitude.Qual o maior número (mais positivo) que pode ser representado?

▶ O maior número em Sinal e Magnitude tem primeiro bit 0 e todos os outros iguais a 1.▶ Para 8 bits: 1111111(2) = 127(10).

Qual o menor número (mais negativo) que pode ser representado?▶ O menor número em Sinal e Magnitude tem primeiro bit 1 e todos os outros iguais a 1.▶ Para 8 bits: −1111111(2) = −127(10).

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 17 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Sinal e Magnitude: Limites (II)

De forma mais genérica, com uma quantidade n qualquer de bits:▶ Maior número: 2(n−2) + 2(n−3) + · · · + 20 = 2(n−1) − 1.▶ Menor número: −

(2(n−2) + 2(n−3) + · · · + 20)

= −(2(n−1) − 1

).

Exemplos para alguns valores de n:▶ Para n = 4: de -7 a 7.▶ Para n = 16: de -32767 a 32767.▶ Para n = 32: de -2147483647 a 2147483647

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 18 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Sinal e Magnitude: Duplicidade do Valor 0

Considere as seguintes sequências de bits:▶ 00000000 e 10000000.

Assumindo que ambas são representações em Sinal e Magnitude com 8 bits, quais osvalores representados?Vamos fazer a interpretação:

▶ Primeiro número tem sinal positivo e magnitude 0.▶ Segundo número tem sinal negativo e magnitude 0.

Conclusão: ambos são 0.Na representação em sinal e magnitude, o valor zero tem duas representações distintas.

▶ O “zero positivo”: 000 . . . 0.▶ E o “zero negativo”: 100 . . . 0.

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 19 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Sinal e Magnitude: Usos

Pela sua similaridade com a notação escrita, a representação em Sinal e Magnitude foiusada em alguns computadores antigos.

▶ e.g., IBM 7090 em 1959.Mas a duplicidade do valor 0 e a lógica “complicada” para certas operações matemáticasresultou em pouco popularidade.

▶ Outras representações são mais simples.▶ Note que a duplicidade do zero desperdiça bits.

Hoje, a maior importância desta representação é ser a base para a Representação em PontoFlutuante.

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 20 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Representação em Excesso de k

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 21 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Introdução

Também chamada de offset binário.Assim como a representação em Sinal e Magnitude, só permite representar númerosinteiros.

▶ Positivos, negativos e zero.Além do número de bits, é usado um outro parâmetro k.

▶ Chamado de excesso.

Para um dado parâmetro k, menor número representável será −k.

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 22 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Como funciona

Funcionamento é bastante simples.Para representar um número a qualquer em Excesso de k com n bits, deve-se:

1 Obter um novo valor b = a + k.2 Representar b na base 2 com n bits.

⋆ Completar com zeros à esquerda, se necessário.

Note que, por hipótese, a ≥ −k.Logo, qualquer que seja a, a + k ≥ 0.

▶ Ou seja, b é necessariamente um número não-negativo.

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 23 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Exemplos

Representação de 8 bits em excesso de 128:

Bits do Computador

11001010

{

a = -45(10)

b = -45(10) + 128(10) = 83(10)

83(10) = 1010011(2)

Bits do Computador

00000000

a = -128(10)

b = -128(10) + 128(10) = 0(10)

0(10) = 0(2)

Bits do Computador

10001011

a = 81(10)

b = 81(10) + 128(10) = 209(10)

209(10) = 11010001(2){ {

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 24 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Exercícios

Represente os seguintes valores em Representação em Excesso:▶ 19(10) com 10 bits e excesso de 128.▶ −24(10) com 7 bits e excesso de 50.▶ −24(8) com 8 bits e excesso de 21.▶ 73(16) com 7 bits e excesso de 5.

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 25 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Interpretando um Número na Representação em Excesso de k

Dado um número escrito na representação em Excesso de k, podemos interpretá-lofacilmente.Para isso, basta:

1 Converter a representação binária para decimal.2 Subtrair do excesso k.

Exemplos: quais os valores dos seguintes números representados em excesso de 64 com 8bits?

▶ 00101101.⋆ 00101101(2) − 64(10) = 45(10) − 64(10) = −19(10).

▶ 00010101.⋆ 00010101(2) − 64(10) = 21(10) − 64(10) = −43(10).

▶ 01110101.⋆ 01110101(2) − 64(10) = 117(10) − 64(10) = 53(10).

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 26 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Fazendo Contas com a Representação em Excesso de k

Ao realizar contas na representação em excesso, precisamos lembrar do excesso k somadoaos operandos.Por exemplo, se os dois operandos são a e b, na verdade a representação terá valoresa′ = a + k e b′ = b + k.Considere, por exemplo, uma soma.

▶ Se somarmos diretamente os bits das representações, obteremos a′ + b′ = a + k + b + k.▶ O excesso fica dobrado.▶ Logo, para corrigir o valor, basta subtrair o excesso.

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 27 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Fazendo Contas com a Representação em Excesso de k (II)

Podemos também inverter o sinal de um número.▶ Considere um número a com representação a′ = a + k.▶ Queremos calcular a representação de (−a)′ = (−a) + k.▶ Da primeira equação, temos (−a) = k − a′.▶ Substituindo na segunda, ficamos com (−a)′ = k − a′ + k = 2k − a′.

Em resumo, dada a representação de um número em Representação em Excesso de k, bastasubtraí-la de 2k.Exemplo:

▶ Inverter o sinal de 11010001 representado em excesso de 128 (equivalente 81(10)).▶ 2 × 128(10) = 100000000(2).▶ 100000000(2) − 11010001(2) = 00101111(2).▶ Traduzindo da representação em excesso: 00101111(2) − 128(10) = 47(10) − 128(10) = −81(10).

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 28 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Fazendo Contas com a Representação em Excesso de k (III)

Sabendo inverter o sinal de um número, é fácil realizar subtrações.Basta inverter o sinal do subtraendo e realizar a soma dos valores encontrados.Note que divisões e subtrações são mais complicadas.

▶ Não podemos realizá-las na representação.▶ Precisamos operar sobre os valores absolutos dos operandos, sem o excesso.▶ Para isso, o primeiro passo é descobrir se os operandos são menores que zero.

⋆ Se forem, invertemos o sinal.▶ Em seguida, removemos o excesso, realizamos a operação e adicionamos o excesso de volta ao

resultado.▶ Por fim, se os sinais dos operandos eram diferentes, invertemos o sinal do resultado.

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 29 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Representação em Excesso de k : Limites

Qual o menor valor que pode ser escrito em uma representação em Excesso de k com nbits?

▶ Já comentado anteriormente: −k.▶ Tem representação com todos os bits zerados.▶ Independente do valor de n.

E qual é o maior valor?▶ Neste caso, é o valor associado a uma representação contendo todos os bits iguais a 1.

⋆ 11 . . . 1.▶ Traduzindo: 11 . . . 1(2) − k = 2(n−1) + 2(n−2) + · · · + 20 − k = 2n − 1 − k.▶ Depende tanto de k, quanto de n.

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 30 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Qual Valor de k Escolher?

A princípio, pode-se escolher qualquer valor positivo de k.Note, no entanto, que k influencia no maior e menor valores representáveis.

▶ Quanto maior o k, mais números negativos podem ser representados.▶ Mas menos números positivos são viáveis.

Geralmente, opta-se por um k que balanceie a representabilidade entre números positivos enegativos.Para um dado número de bits n, por exemplo, pode-se escolher k = 2(n−1).

▶ Números representáveis na faixa de −2(n−1) a 2(n−1) − 1.

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 31 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Identificando Números Negativos e Positivos

Como determinar se um número escrito na representação em Excesso de k é menor que 0?No caso geral, precisamos comparar a representação ao valor de k.

▶ Se a representação é maior, o número é positivo.▶ Se é menor, o número é negativo.▶ Se ambos são iguais, o número é 0.

Para um valor de k qualquer, esta comparação pode não ser trivial.▶ i.e., pode ser necessário olhar para vários bits.▶ e.g., determinar sinal de 1101101 na representação em excesso de 1101100.

No entanto, se escolhermos o excesso k = 2(n−1), precisamos olhar apenas para primeirobit.

▶ Se for 0, o número é negativo.▶ e.g., 01011101 é negativo em excesso de 128.▶ e.g., 10001001 é positivo em excesso de 128.

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 32 / 33

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Representação em Excesso de k : Usos

Assim como a representação por Sinal e Magnitude, a representação em excesso não é ométodo mais popular hoje em dia.

▶ Suas operações ainda são relativamente complexas.▶ Embora ela não apresente a duplicidade do zero.

Na década de 70, certos computadores, caixas registradores e calculadores empregavamuma representação baseada em Excesso de 3.Ela também é útil em certas aplicações de eletrônica.Nos computadores modernos, ela é importante por fazer parte da Representação em PontoFlutuante.

Diego Passos (UFF) Sinal e Magnitude; Excesso de k FAC 33 / 33