Você está na página 1de 133

Aula 03 Aritmética do computador

Arquitetura de Computadores Professor Ricardo Amorim

Aula 03 Aritmética do computador Arquitetura de Computadores Professor Ricardo Amorim <a href=Prof.ricardoamorim@gmail.com " id="pdf-obj-0-8" src="pdf-obj-0-8.jpg">

Introdução

• A Unidade Lógica Aritmética • Representação de Inteiros • Aritmético com Inteiros • Representação de Ponto flutuante • Aritmética de Ponto Flutuante

Introdução • A Unidade Lógica Aritmética • Representação de Inteiros • Aritmético com Inteiros • Representação
Referência Bibliográfica
Referência Bibliográfica
Referência Bibliográfica

Objetivo

Objetivo

O funcionalidade da unidade lógica e aritmética (ULA), enfocando a representação de números e as técnicas para implementar as operações aritméticas. Geralmente, os processadores implementam dois tipos de aritmética: de números inteiros ou ponto fixo e de ponto flutuante. Em ambos os casos, abordamos primeiro a representação dos números.

Objetivo Objetivo O funcionalidade da unidade lógica e aritmética (ULA), enfocando a representação de números e

Principais Pontos

Principais

Pontos

Os dois aspectos mais importantes da aritmética computacional são o modo como os números são representados (o formato binário) e os algoritmos usados para as operações aritméticas básicas (adição, subtração, multiplicação e divisão). Isso se aplica tanto para a aritmética de números inteiros quanto para a de números de ponto flutuante.

Principais Pontos Principais Pontos Os dois aspectos mais importantes da aritmética computacional são o modo como

Principais Pontos

Principais

Pontos

Números de ponto flutuante são expressos na forma de um número (mantissa – parte decimal de logaritmo) multiplicado por uma constante (base) elevada a uma potência inteira (expoente). Eles podem ser usados para representar números muito grandes e muito pequenos.

Principais Pontos Principais Pontos Números de ponto flutuante são expressos na forma de um número (

Principais Pontos

Principais

Pontos

A maioria dos processadores implementa o padrão IEEE 754 para representação e aritmética de números de ponto flutuante. Esse padrão define um formato de 32 bits e de 64 bits.

Principais Pontos Principais Pontos A maioria dos processadores implementa o padrão IEEE 754 para representação e

Apêndice Sistema

Apêndice

Sistema dede

Numeração

Numeração

O Sistema Decimal

Na vida diária, usamos números representados em um sistema de numeração de base 10, com dígitos decimais (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), conhecido como sistema decimal. Considere o significado do número 83. Ele significa oito dezenas e três unidades:

83 = (8 x 10) + 3

– – Sistema Apêndice de de Numeração Numeração O Sistema Decimal Na vida diária, usamos

Apêndice Sistema

Apêndice

Sistema dede

Numeração

Numeração

O Sistema Decimal O número 4728 significa quatro milhares, sete centenas, duas dezenas e oito unidades:

4728 = (4 x 1000) + (7 x 100) + (2 x 10) + 8

– – Sistema Apêndice de de Numeração Numeração O Sistema Decimal O número 4728 significa

Apêndice Sistema

Apêndice

Sistema dede

Numeração

Numeração

O Sistema Decimal

O sistema decimal é assim chamado por usar a base 10. Isso significa que cada dígito do número é multiplicado por 10 elevado à potência correspondente à posição do dígito:

83= (8x10 1 )+(3x10 0 ) 4728= (4x10 3 )+(7x10 2 )+(2x10 1 )+(8x10°)

– – Sistema Apêndice de de Numeração Numeração O Sistema Decimal O sistema decimal é

Apêndice Sistema

Apêndice

Sistema dede

Numeração

Numeração

O Sistema Decimal

Valores fracionários são representados do mesmo modo:

472,83= (4x10 2 )+(7x10 1 )+(2x10 0 )+(8x10- 1 )+(3x10- 2 )

– – Sistema Apêndice de de Numeração Numeração O Sistema Decimal Valores fracionários são representados

Apêndice Sistema

Apêndice

Sistema dede

Numeração

Numeração

O Sistema Decimal

Para evitar confusão, algumas vezes usamos um

número subscrito para indicar a base do sistema de numeração adotado. Por exemplo,

  • 83 10 e 4728 10 são números representados na

notação decimal, ou seja números decimais.

– – Sistema Apêndice de de Numeração Numeração O Sistema Decimal Para evitar confusão, algumas

Apêndice Sistema

Apêndice

Sistema dede

Numeração

Numeração

O sistema binário

No sistema decimal, são usados dez dígitos distintos para representar os números na base 10. No sistema binário, temos apenas dois dígitos, 1 e 0. Portanto, números no sistema binário são representados na base 2.

– – Sistema Apêndice de de Numeração Numeração O sistema binário No sistema decimal ,

Apêndice Sistema

Apêndice

Sistema dede

Numeração

Numeração

O sistema binário Conversão entre números binários e decimais

A conversão de um número na notação binária para a notação decimal é simples. Basta multiplicar cada dígito binário pela potência de 2 adequada e somar os resultados.

– – Sistema Apêndice de de Numeração Numeração O sistema binário Conversão entre números binários

Obtendo

Obtendo oo valor

valor decimal

decimal dodo seguinte

seguinte

número binário:

número

binário: 11001110

11001110

 

1

1

0

0

1

1

1

0

equivale a:

128

64

32

16

8

4

2

1

Multiplicação:

1x128 1x64

0x32

0x16

1x8

1x4

1x2

0x1

Resulta em:

128

64

0

0

8

4

2

0

Somando tudo:

128+64+0+0+8+4+2+0

 

Resulta em:

206

Obtendo o o valor decimal do do seguinte número binário: número binário: 11001110 11001110 1 1

Exemplo 22 número

Exemplo

número binário:

binário:

11100010 11100010

 

1

1

1

0

0

0

1

0

equivale a:

128

64

32

16

8

4

2

1

Multiplicação:

1x128

1x64 1x32

0x16

0x8 0x4

1x2

0x1

Resulta em:

128

64

32

0

0

0

2

0

Somando tudo:

128+64+32+0+0+0+2+0

 

Resulta em:

226

2 2 número Exemplo binário: 11100010 11100010 1 1 1 0 0 0 1 0

Nota:

Importante

Importante

Nos exemplos utilizaremos valores de, no máximo, 256, que são valores que podem ser representados por 8 dígitos binários, ou na linguagem do computador 8 bits, o que equivale exatamente a um byte.

Nota: Importante Importante Nos exemplos utilizaremos valores de, no máximo, 256 , que são valores que

Apêndice Sistema

Apêndice

Sistema dede

Numeração

Numeração

O sistema binário Conversão entre números binários e decimais

Para converter a notação decimal em notação binária, o número inteiro e a parte fracionária são tratados separadamente. Suponha que queremos converter um número inteiro decimal N para a forma binária. Se dividirmos N por 2, no sistema decimal, obtendo um quociente N1 e um resto R1.

– – Sistema Apêndice de de Numeração Numeração O sistema binário Conversão entre números binários

Apêndice Sistema

Apêndice

Sistema dede

Numeração

Numeração

O sistema binário Conversão entre números binários e decimais

Ou seja, podemos converter da base 10 para a base 2 por meio de repetidas divisões por 2. O resto e o quociente final, 1, nos dão os dígitos binários de N, na ordem do menor para o maior dígito significativo. A Figura 9.27 mostra dois exemplos.

– – Sistema Apêndice de de Numeração Numeração O sistema binário Conversão entre números binários

Apêndice Sistema

Apêndice

Sistema dede

Numeração

Numeração

– – Sistema Apêndice de de Numeração Numeração
– – Sistema Apêndice de de Numeração Numeração

Regra

Regra para

para fazer

fazer esta

esta conversão

conversão

Regra Regra para para fazer fazer esta esta conversão conversão Podemos então concluir que 8(10)= 1000

Podemos então concluir que 8(10)=1000(2) ( 8 = 1×23+ +0×22+ 0×21+0×20 )

Regra Regra para para fazer fazer esta esta conversão conversão Podemos então concluir que 8(10)= 1000

Outro

Outro Exemplo

Exemplo

Outro Outro Exemplo Exemplo Podemos então concluir que 66(10)=1000010(2) ( 66 = 1×26+ + 0×25+0×24+0×23+0×22+1×21+0×20 )

Podemos então concluir que 66(10)=1000010(2) ( 66 = 1×26+ + 0×25+0×24+0×23+0×22+1×21+0×20 )

Outro Outro Exemplo Exemplo Podemos então concluir que 66(10)=1000010(2) ( 66 = 1×26+ + 0×25+0×24+0×23+0×22+1×21+0×20 )

Atividade

Atividade

Notação decimal Notação binária

220

101001

50

 

1011

79

10000111

Atividade Atividade Notação decimal Notação binária 220 101001 50 1011 79 10000111

Apêndice Sistema

Apêndice

Sistema dede

Numeração

Numeração

Em virtude da natureza binária inerente dos componentes de um computador digital, todas as formas de dados são representadas, dentro do computador, por códigos binários.

– – Sistema Apêndice de de Numeração Numeração Em virtude da natureza binária inerente dos

Apêndice Sistema

Apêndice

Sistema dede

Numeração

Numeração

Notação hexadecimal

No entanto, embora o sistema binário seja conveniente para computadores, é excessivamente ineficiente para seres

humanos. Por isso, a maioria dos profissionais de computação que passam grande parte do

tempo trabalhando com dados manipulados no computador prefere uma notação mais compacta.

– – Sistema Apêndice de de Numeração Numeração Notação hexadecimal No entanto, embora o sistema

Apêndice Sistema

Apêndice

Sistema dede

Numeração

Numeração

Notação hexadecimal

Que notação usar?

Uma possibilidade seria a notação decimal. Essa notação certamente é mais compacta que a notação binária, mas é desconfortável devido à tediosa conversão entre a base 2 e a base 10.

– – Sistema Apêndice de de Numeração Numeração Notação hexadecimal Que notação usar? Uma possibilidade

Apêndice Sistema

Apêndice

Sistema dede

Numeração

Numeração

Notação hexadecimal Os computadores costumam utilizar o byte ou octeto como unidade básica da memória; e, devido a um byte representar 2 8 = 256 valores possíveis, e isto poder representar-se como

2 8 = 2 4 x 2 4 = 16 x 16 = 1 x 16 2 + 0 x 16 1 + 0 x 16 0 , o que, segundo o teorema geral da numeração posicional, equivale ao número em base 16 100 16 , dois dígitos hexadecimais

correspondem exatamente permitem representar a mesma linha de inteiros a um byte.

– – Sistema Apêndice de de Numeração Numeração Notação hexadecimal Os computadores costumam utilizar o

Apêndice Sistema

Apêndice

Sistema dede

Numeração

Numeração

– – Sistema Apêndice de de Numeração Numeração
– – Sistema Apêndice de de Numeração Numeração

Apêndice Sistema

Apêndice

Sistema dede

Numeração

Numeração

Notação hexadecimal

Em vez disso, é adotada uma notação conhecida como hexadecimal. Os dígitos binários são agrupados em conjuntos de quatro. A cada combinação possível de quatro dígitos binários é atribuído um símbolo, como a seguir:

– – Sistema Apêndice de de Numeração Numeração Notação hexadecimal Em vez disso, é adotada

Apêndice Sistema

Apêndice

Sistema dede

Numeração

Numeração

– – Sistema Apêndice de de Numeração Numeração
– – Sistema Apêndice de de Numeração Numeração

Apêndice Sistema

Apêndice

Sistema dede

Numeração

Numeração

Notação hexadecimal

Por serem usados 16 símbolos, a notação é chamada hexadecimal e esses 16 símbolos são os dígitos hexadecimais.

A notação hexadecimal é usada não apenas para representar números inteiros. Ela também é usada como uma notação concisa para representar qualquer seqüência de dígitos binários, mesmo que representem texto, números ou algum outro tipo de dado.

– – Sistema Apêndice de de Numeração Numeração Notação hexadecimal Por serem usados 16 símbolos

Apêndice Sistema

Apêndice

Sistema dede

Numeração

Numeração

Notação hexadecimal

As razões para se usar notação hexadecimal são as seguintes:

1. É mais compacta que a notação binária.

2. Na maioria dos computadores, os dados binários têm um tamanho que é múltiplo de 4 bits e, portanto, múltiplo de um dígito hexadecimal.

3. É extremamente fácil converter entre as notações binária e hexadecimal.

– – Sistema Apêndice de de Numeração Numeração Notação hexadecimal As razões para se usar

Apêndice Sistema

Apêndice

Sistema dede

Numeração

Numeração

Notação hexadecimal

O processo é realizado tão naturalmente que um programador experiente pode converter representações visuais de dados binários para seus equivalentes hexadecimais mentalmente, sem precisar escrever. É bem provável que você

nunca necessite dessa habilidade em particular.

– – Sistema Apêndice de de Numeração Numeração Notação hexadecimal O processo é realizado tão

Notação hexadecimal

Notação

hexadecimal

Vimos que a numeração hexadecimal consiste no uso de 16 símbolos para expressar um número. São eles:

0 1 2 3 4 5 6 7 8 9 A B C D E F

Os dígitos 0 - 9 possuem os mesmos valores dos dígitos 0 - 9 decimais. Porém, os símbolos A - F correspondem aos valores decimais 10 - 15, onde A é

10, B é 11, C é 12

...

e F é 15.

Notação hexadecimal Notação hexadecimal Vimos que a numeração hexadecimal consiste no uso de 16 símbolos para

Notação hexadecimal

Notação

hexadecimal

Conversão de Números Hexadecimais Para converter o número 2AB3 16 para o sistema decimal,

multiplicamos o valor do número pelo valor da casa:

  • 2 = 2 x 16 3 = 2 x 4096 = 8192

A = A x 16 2 = 10 x 256 = 2560

B = B x 16 1 = 11 x 16 = 176

  • 3 = 3 x 16 0 = 3 x 1 = 3 Para finalizar, somamos todos os resultados:

8192 + 2560 + 176 + 3 = 10931

10

Notação hexadecimal Notação hexadecimal Conversão de Números Hexadecimais Para converter o número 2AB3 para o sistema

Notação hexadecimal

Notação

hexadecimal

Conversão de Números Decimais para Hexadecimais

Para converter um número como 3456, por exemplo, em hexadecimal, executamos a seguinte operação:

Dividimos o 3456 pelo maior 16n possível, ou seja, por 16 2 (256):

Notação hexadecimal Notação hexadecimal Conversão de Números Decimais para Hexadecimais Para converter um número como 3456

Notação hexadecimal

Notação

hexadecimal

Dividimos o 3456 pelo maior 16n possível, ou seja, por 16 2 (256):

Notação hexadecimal Notação hexadecimal Dividimos o 3456 pelo maior 16n possível, ou seja, por 16 (256):

Dividimos o resto (128) pelo maior 16n possível novamente, ou seja, por 16 1 = 16:

Notação hexadecimal Notação hexadecimal Dividimos o 3456 pelo maior 16n possível, ou seja, por 16 (256):
Notação hexadecimal Notação hexadecimal Dividimos o 3456 pelo maior 16n possível, ou seja, por 16 (256):

Notação hexadecimal

Notação

hexadecimal

Para finalizar a conversão, seguimos a tabela:

Notação hexadecimal Notação hexadecimal Para finalizar a conversão, seguimos a tabela: Como o resultado da primeira

Como o resultado da primeira divisão (13) é igual ao número D hexadecimal e o resultado da segunda divisão (8) é igual ao número 8 hexadecimal, podemos concluir que:

3456 = D80

Notação hexadecimal Notação hexadecimal Para finalizar a conversão, seguimos a tabela: Como o resultado da primeira

Notação hexadecimal

Notação

hexadecimal

Outra maneira de converter 3456

3456 / 16 = 216 resto 0 216 / 16 = 13 resto 8 Resultado 13, 8, 0 = D80

10

16

Notação hexadecimal Notação hexadecimal Outra maneira de converter 3456 3456 / 16 = 216 resto 0

Notação hexadecimal

Notação

hexadecimal

Outro exemplo de converte Decimal para Hexadecimal 1024

10

1024 / 16 = 64 resto 0 64 / 16 = 4 resto 0 resultado 400

16

Notação hexadecimal Notação hexadecimal Outro exemplo de converte Decimal para Hexadecimal 1024 10 1024 / 16

Notação hexadecimal

Notação

hexadecimal

Hexadecimal para Decimal 400

16

  • 4 = 4 x 16 2 = 4 x 256 = 1024

  • 0 = 0 x 16 1 = 0

  • 0 = 0 x 160 = 0 1024 + 0 + 0 =1024

10

Outro Exemplo de Decimal para Hexadecimal 4 4 10 é o próprio 4 16 pois o
Outro Exemplo de Decimal para Hexadecimal 4
4 10 é o próprio 4 16 pois o hexadecimal é formado 1 2 3 4 6
..
F.

Notação Octal

Notação

Octal

Sistema Octal é um sistema de numeração cuja base é 8, ou seja, utiliza 8 símbolos para a representação de quantidade. No ocidente, estes símbolos são os algarismos arábicos:

0 1 2 3 4 5 6 7

Notação Octal Notação Octal Sistema Octal é um sistema de numeração cuja base é 8, ou

Notação Octal

Notação

Octal

Converter o número octal 764 para o sistema decimal:

7²6¹4 0

8

  • 764 = 7 x 8² + 6 x 8¹ + 4 x 8¹

8

=

  • 448 + 48 + 4 = 500

10

Notação Octal Notação Octal Converter o número octal 764 para o sistema decimal: 7²6¹4 8 764

Sistema Numérico

Sistema

Numérico

Resumo

Sistema Numérico Sistema Numérico Resumo
Sistema Numérico Sistema Numérico Resumo

Sistema Numérico

Sistema

Numérico

Usando Planilha

Sistema Numérico Sistema Numérico Usando Planilha
Sistema Numérico Sistema Numérico Usando Planilha

AA Unidade

Unidade Lógica

Lógica Aritmética

Aritmética

A ULA é a parte do computador que de fato executa as operações aritméticas e lógicas sobre os dados. Todos os outros elementos do computador - unidade de controle, registradores, memória, E/S - servem principalmente, para trazer os dados a serem processados pela ULA e receber os resultados das operações efetuadas. De certo modo, a ULA constitui o núcleo ou a essência de um computador.

A A Unidade Lógica Aritmética A ULA é a parte do computador que de fato executa

AA Unidade

Unidade Lógica

Lógica Aritmética

Aritmética

Assim como todos os demais componentes eletrônicos de um computador, a ULA é baseada em dispositivos lógicos digitais simples, capazes de armazenar dígitos binários e efetuar operações simples de lógica booleana.

A A Unidade Lógica Aritmética Assim como todos os demais componentes eletrônicos de um computador, a

AA Unidade

Unidade Lógica

Lógica Aritmética

Aritmética

A Figura 9.1 indica, em termos gerais, como a ULA é conectada com o restante do processador.

Os dados são fornecidos à ULA em registradores e os resultados de uma operação são armazenados em registradores. Esses registradores são áreas de armazenamento temporário dentro do processador, conectadas à ULA por meio de caminhos de sinal.

A A Unidade Lógica Aritmética A Figura 9.1 indica, em termos gerais, como a ULA é

AA Unidade

Unidade Lógica

Lógica Aritmética

Aritmética

A A Unidade Lógica Aritmética
A A Unidade Lógica Aritmética

AA Unidade

Unidade Lógica

Lógica Aritmética

Aritmética

A ULA pode também ativar bits especiais (fl ags) para indicar o resultado de uma operação. Por exemplo, caso o resultado de uma operação exceda a capacidade de armazenamento de um registrador isso é indicado atribuindo o valor 1 ao bit de overflow. Esses bits especiais são também armazenados em registradores internos do processador. A unidade de controle fornece sinais para controlar a operação da ULA e a transferência de dados entre a ULA e os registradores.

A A Unidade Lógica Aritmética A ULA pode também ativar bits especiais (fl ags) para indicar

AA Unidade

Unidade Lógica

Lógica Aritmética

Aritmética

No sistema de números binários, é possível representar números arbitrários usando os dígitos zero e um, o sinal de subtração (“-”, para números negativos) e a vírgula decimal (que separa a parte inteira e a parte fracionária do número). Por exemplo:

-1101,0101 2 = -13,3125 10

A A Unidade Lógica Aritmética No sistema de números binários , é possível representar números arbitrários

AA Unidade

Unidade Lógica

Lógica Aritmética

Aritmética

Entretanto, para armazenar e processar esses números no computador, não é possível usar os sinais de menos e vírgula. Apenas dígitos binários (0 e 1) podem ser usados para a representação de números. Isso não constitui um problema se quisermos apenas representar números inteiros não negativos.

A A Unidade Lógica Aritmética Entretanto , para armazenar e processar esses números no computador, não

AA Unidade

Unidade Lógica

Lógica Aritmética

Aritmética

Por exemplo, uma palavra de 8 bits pode ser usada para representar números de 0 a 255.

00000000

= 0

00000001

= 1

00101001

= 41

10000000 = 128 11111111 = 255

A A Unidade Lógica Aritmética Por exemplo, uma palavra de 8 bits pode ser usada para

AA Unidade

Unidade Lógica

Lógica Aritmética

Aritmética

Representação sinal-magnitude

Diversas convenções alternativas são usadas para representar números inteiros positivos e negativos; todas elas tratam o bit mais significativo da palavra (bit mais à esquerda) como um bit de sinal: se o bit mais à esquerda for 0, o número será positivo; se for 1, o número será negativo.

A A Unidade Lógica Aritmética Representação sinal-magnitude Diversas convenções alternativas são usadas para representar números inteiros

AA Unidade

Unidade Lógica

Lógica Aritmética

Aritmética

Representação sinal-magnitude

A forma mais simples de representação que emprega um bit de sinal é a representação sinal- magnitude. Em uma palavra de n bits, os n - 1 bits mais à direita representam a magnitude do número inteiro. Por exemplo:

+18 = 00010010 -18 = 10010010 (sinal-magnitude)

A A Unidade Lógica Aritmética Representação sinal-magnitude A forma mais simples de representação que emprega um

AA Unidade

Unidade Lógica

Lógica Aritmética

Aritmética

Representação sinal-magnitude

A representação sinal-magnitude apresenta diversas desvantagens. Uma delas é que, para efetuar operações de adição e subtração, é preciso considerar tanto a magnitude quanto o sinal dos dois operandos. Outra desvantagem é que existem duas representações para 0:

+ 010 = 00000000 - 010 =10000000 (sinal-magnitude)

A A Unidade Lógica Aritmética Representação sinal-magnitude A representação sinal-magnitude apresenta diversas desvantagens . Uma delas

AA Unidade

Unidade Lógica

Lógica Aritmética

Aritmética

Representação sinal-magnitude

Isso é inconveniente, pois é mais difícil testar se um valor é igual a 0 (operação que é executada freqüentemente) do que no caso em que existe uma única representação para 0.

Em virtude dessas desvantagens, a representação sinal- magnitude é raramente usada na implementação da parte inteira de uma ULA. O esquema mais comum é a representação em complemento de dois.

A A Unidade Lógica Aritmética Representação sinal-magnitude Isso é inconveniente, pois é mais difícil testar se

AA Unidade

Unidade Lógica

Lógica Aritmética

Aritmética

Representação em complemento de dois

Assim como a representação sinal-magnitude, a representação em complemento de dois usa o bit mais significativo como bit de sinal, o que torna fácil testar se um número inteiro é positivo ou negativo. Entretanto, os demais bits são interpretados de maneira diferente. A Tabela 9.1 relaciona as características-chave da representação e da aritmética em complemento de dois.

A A Unidade Lógica Aritmética Representação em complemento de dois Assim como a representação sinal-magnitude, a

AA Unidade

Unidade Lógica

Lógica Aritmética

Aritmética

A A Unidade Lógica Aritmética
A A Unidade Lógica Aritmética

AA Unidade

Unidade Lógica

Lógica Aritmética

Aritmética

Representação em complemento de dois

A maioria das abordagens da representação em complemento de dois define apenas as regras para representar os números negativos, não incluindo qualquer prova formal de que esse esquema 'funciona'.

A A Unidade Lógica Aritmética Representação em complemento de dois A maioria das abordagens da representação

AA Unidade

Unidade Lógica

Lógica Aritmética

Aritmética

Representação em complemento de dois

Dattatreya (1993), que sugere que essa representação será bem compreendida se for definida em termos de uma soma ponderada de bits, como foi feito anteriormente para o caso das representações sem sinal e de sinal-magnitude. A vantagem desse tratamento é não deixar dúvidas de que as regras definidas para as operações aritméticas na notação em complemento de dois funcionam em todos os casos.

A A Unidade Lógica Aritmética Representação em complemento de dois Dattatreya (1993), que sugere que essa

AA Unidade

Unidade Lógica

Lógica Aritmética

Aritmética

Conversão entre representações com números de bits diferentes

Algumas vezes é desejável converter a representação de um número inteiro com n

bits para sua representação com m bits, onde m > n. Na notação sinal-magnitude, isso pode ser feito facilmente: basta mover o bit de sinal para a posição mais à esquerda e preencher as demais posições novas com zeros.

A A Unidade Lógica Aritmética Conversão entre representações com números de bits diferentes Algumas vezes é

AA Unidade

Unidade Lógica

Lógica Aritmética

Aritmética

Conversão entre representações com números de bits diferentes

Por exemplo:

+18 = 00010010 (sinal-magnitude, 8 bits)

+18 = 0000000000010010 (sinal-magnitude, 16 bits)

  • - 18 = 10010010 (sinal-magnitude, 8 bits)

  • - 18 = 10000000000010010 (sinal-magnitude, 16 bits)

A A Unidade Lógica Aritmética Conversão entre representações com números de bits diferentes Por exemplo: +18

AA Unidade

Unidade Lógica

Lógica Aritmética

Aritmética

Conversão entre representações com números de bits diferentes

Esse procedimento não funciona no caso de números inteiros negativos representados em complemento de dois. Usando o mesmo exemplo,

+18 = 00010010

(complemento de dois, 8 bits)

+18 = 0000000000010010 (complemento de dois, 16 bits) - 18 = 10010010 (complemento de dois, 8 bits)

O último número acima pode ser verificado pela seqüência de valores da Figura 9.2.

A A Unidade Lógica Aritmética Conversão entre representações com números de bits diferentes Esse procedimento não

AA Unidade

Unidade Lógica

Lógica Aritmética

Aritmética

A A Unidade Lógica Aritmética
A A Unidade Lógica Aritmética

AA Unidade

Unidade Lógica

Lógica Aritmética

Aritmética

Conversão entre representações com números de bits diferentes

A regra para converter uma representação em complemento de dois em outra com maior número de bits consiste em mover o bit de sinal para a posição mais à esquerda e preencher as novas posições de bit com valor igual ao do bit de sinal. Para números positivos, isso significa preencher com zeros e, para números negativos, preencher com uns. Isso é chamado extensão de sinal.

- 18 =111011110

(complemento de dois, 8 bits)

- 18 = 11111111111101110 (complemento de dois, 16 bits).

A A Unidade Lógica Aritmética Conversão entre representações com números de bits diferentes A regra para

AA Unidade

Unidade Lógica

Lógica Aritmética

Aritmética

Representação de ponto fixo

Mencionamos anteriormente que as representações discutidas nesta seção são conhecidas como representações de ponto fixo. Isso ocorre porque elas fixam a posição da vírgula decimal como a posição à direita do bit menos significativo. Essas representações podem também ser usadas pelo programador para frações binárias, se supusermos a vírgula decimal posicionada implicitamente em outra posição.

A A Unidade Lógica Aritmética Representação de ponto fixo Mencionamos anteriormente que as representações discutidas nesta

Aritmética

Aritmética com

com Inteiros

Inteiros

Negação

Na representação sinal-magnitude, a regra para a negação de um número inteiro é simples: basta inverter o valor do bit de sinal. Na notação em complemento de dois, a negação de um número inteiro é obtida pelos seguintes passos:

1. Tome o complemento booleano de cada bit do número (incluindo o bit de sinal), isto é, troque cada 1 por 0 e cada 0 por 1.

2. Adicione 1 ao resultado, visto como um número inteiro binário sem sinal.

Aritmética Aritmética com com Inteiros Inteiros Negação Na representação sinal-magnitude , a regra para a negação

Aritmética

Aritmética com

com Inteiros

Inteiros

Negação

Como se pode esperar, o resultado da dupla negação de um número é o próprio número:

- 18 = 11101110 (complemento de dois) complemento bit a bit = 00010001

+

1

_____

00010010 = + 18

Aritmética Aritmética com com Inteiros Inteiros Negação Como se pode esperar, o resultado da dupla negação

Aritmética

Aritmética com

com Inteiros

Inteiros

A tabuada da soma aritmética em binário é muito simples. São poucas regras:

  • 0 + 0 = 0

  • 0 + 1 = 1

    • 1 + 0 = 1

  • 1 + 1 = 0 (e "vai 1" para o dígito de ordem superior)

  • 1 + 1 + 1 = 1 (e "vai 1" para o dígito de ordem superior)

Aritmética Aritmética com com Inteiros Inteiros A tabuada da soma aritmética em binário é muito simples.

Aritmética

Aritmética com

com Inteiros

Inteiros

Exemplo:

Efetuar 011100 + 011010 11-----> "vai um"

011100

  • 011010 +

----------

110110

Aritmética Aritmética com com Inteiros Inteiros Exemplo: Efetuar 011100 + 011010 11 -----> "vai um" 011100

Aritmética

Aritmética com

com Inteiros

Inteiros

Vamos ver agora a tabuada da subtração:

  • 0 - 0 = 0

  • 0 - 1 = 1 ("vem um do próximo")

    • 1 - 0 = 1

    • 1 - 1 = 0

Aritmética Aritmética com com Inteiros Inteiros Vamos ver agora a tabuada da subtração : 0 -

Aritmética

Aritmética com

com Inteiros

Inteiros

Vamos ver agora a tabuada da subtração:

  • 0 - 0 = 0

  • 0 - 1 = 1 ("vem um do próximo")

  • 1 - 0 = 1

  • 1 - 1 = 0

Obs.: Como é impossível tirar 1 de zero, o artifício é "pedir emprestado" 1 da casa de ordem superior. Ou seja, na realidade o que se faz é subtrair 1 de 10 e encontramos 1 como resultado, devendo então subtrair 1 do dígito de ordem superior (aquele 1 que se "pediu emprestado"). Vamos lembrar que esse algoritmo é exatamente o mesmo da subtração em decimal a que já estamos acostumados desde primário

Aritmética Aritmética com com Inteiros Inteiros Vamos ver agora a tabuada da subtração : 0 -

Aritmética

Aritmética com

com Inteiros

Inteiros

Exemplo:

Efetuar 111100 - 011010 ---02-> "vem um"

11100

01010

-

----------

10010

Aritmética Aritmética com com Inteiros Inteiros Exemplo: Efetuar 111100 - 011010 ---02-> "vem um" 11100 01010

Aritmética

Aritmética com

com Inteiros

Inteiros

Vamos ver agora a tabuada da Multiplicação:

  • 0 x 0 = 0

  • 0 x 1 = 0

  • 1 x 0 = 0

  • 1 x 1 = 1 Exemplo:

Efetuar 110 x 101

110

101

x----------

110

000

110

+---------

11110

Aritmética Aritmética com com Inteiros Inteiros Vamos ver agora a tabuada da Multiplicação : 0 x

Aritmética

Aritmética com

com Inteiros

Inteiros

Para a divisão não existe tabuada pois na sua resolução utilizam-se apenas operações de multiplicação e subtração.

  • 0 : 0 = 0

  • 0 : 1 = 0

  • 1 : 0 = não permitido

  • 1 : 1 = 1

Aritmética Aritmética com com Inteiros Inteiros Para a divisão não existe tabuada pois na sua resolução

Aritmética

Aritmética com

com Inteiros

Inteiros

Adição e subtração

A adição de números na representação em complemento de dois é apresentada na Figura 9.3. Os quatro primeiros exemplos mostram operações bem-sucedidas. Se o resultado da operação for positivo, será obtido um número positivo na notação binária. Se for negativo, será obtido um número negativo em complemento de dois. Note que, em alguns dos exemplos, ocorre um 'vai-um' para fora do bit mais significativo da palavra, que é ignorado.

Aritmética Aritmética com com Inteiros Inteiros Adição e subtração A adição de números na representação em

Aritmética

Aritmética com

com Inteiros

Inteiros

Aritmética Aritmética com com Inteiros Inteiros
Aritmética Aritmética com com Inteiros Inteiros

Aritmética

Aritmética com

com Inteiros

Inteiros

Adição e subtração

O resultado de uma adição pode ter um número de bits maior do que o tamanho da palavra usada. Essa condição é denominada overflow. Quando ocorre overflow, a ULA deve sinalizar esse fato, para que o resultado não seja utilizado. A detecção de overflow é feita de acordo com a seguinte regra: na adição de dois números, ambos positivos ou negativos, ocor- rerá overflow somente se o resultado tiver sinal oposto. As Figuras 9.3e e 9.3f mostram exemplos de overflow. Note que pode ocorrer overflow mesmo não havendo 'vai-um' para fora do bit mais significativo.

Aritmética Aritmética com com Inteiros Inteiros Adição e subtração O resultado de uma adição pode ter

Aritmética

Aritmética com

com Inteiros

Inteiros

Adição e subtração

A subtração também é implementada facilmente, usando a seguinte regra: para subtrair um número S (subtraendo) de um número M (minuendo), pegue o complemento de dois (negação) de S e acrescente esse valor a M. Dessa maneira, a subtração é implementada usando a adição, como indicado na Figura 9.5. Os dois últimos exemplos mostram que pode ocorrer overflow.

Aritmética Aritmética com com Inteiros Inteiros Adição e subtração A subtração também é implementada facilmente, usando

Aritmética

Aritmética com

com Inteiros

Inteiros

Aritmética Aritmética com com Inteiros Inteiros

Aritmética

Aritmética com

com Inteiros

Inteiros

Adição e subtração

A Figura 9.6 sugere os caminhos de dados e elementos de hardware necessários para efetuar a adição e a subtração. O elemento central é um somador binário (ou meio-somador), que recebe dois números e produz como resultado a soma desses números e uma indicação de overflow.

Aritmética Aritmética com com Inteiros Inteiros Adição e subtração A Figura 9.6 sugere os caminhos de

Aritmética

Aritmética com

com Inteiros

Inteiros

Aritmética Aritmética com com Inteiros Inteiros

Aritmética

Aritmética com

com Inteiros

Inteiros

Adição e subtração

O somador binário trata os dois operandos como números inteiros sem sinal. (Um circuito lógico que implementa o somador é mostrado no Apêndice A.) Esses dois operandos são apresentados ao somador em dois registradores, designados, nesse caso, como registradores A e

B.

Aritmética Aritmética com com Inteiros Inteiros Adição e subtração O somador binário trata os dois operandos

Aritmética

Aritmética com

com Inteiros

Inteiros

Adição e subtração

O resultado pode ser armazenado em um desses registradores ou em um terceiro. A ocorrência de overflow é indicada por um bit de overflow (0 = não ocorreu overflow; 1 = ocorreu overflow). Na operação de subtração, o subtraendo (registrador B) é passado por um circuito que calcula seu complemento de dois, sendo esse valor, então, passado para o somador.

Aritmética Aritmética com com Inteiros Inteiros Adição e subtração O resultado pode ser armazenado em um

Aritmética

Aritmética com

com Inteiros

Inteiros

Multiplicação

Comparada às operações de adição e subtração, a multiplicação é uma operação complexa, seja implementada em hardware seja em software. Uma grande variedade de algoritmos de multiplicação tem sido usada em diversos computadores.

Aritmética Aritmética com com Inteiros Inteiros Multiplicação Comparada às operações de adição e subtração, a multiplicação

Aritmética

Aritmética com

com Inteiros

Inteiros

Multiplicação

O propósito desta subseção é dar ao leitor uma noção do tipo de abordagem tipicamente adotada. Começamos pelo problema mais simples de multiplicar dois números inteiros sem sinal (não negativos), para depois examinar uma das técnicas mais usadas para a multiplicação de números em complemento de dois.

Aritmética Aritmética com com Inteiros Inteiros Multiplicação O propósito desta subseção é dar ao leitor uma

Aritmética

Aritmética com

com Inteiros

Inteiros

Números Inteiros sem sinais

A Figura 9.7 mostra a multiplicação de números inteiros binários sem sinal, tal como é feita com lápis e papel. Diversas observações importantes podem ser feitas:

1. A multiplicação envolve a geração de produtos parciais, um para cada dígito do multiplicador. Esses produtos parciais são somados para a obtenção do produto final.

2. Os produtos parciais são determinados facilmente. Quando o bit do multiplicador é O, o produto parcial é O. Quando é 1, o produto parcial é o próprio multiplicando.

Aritmética Aritmética com com Inteiros Inteiros Números Inteiros sem sinais A Figura 9.7 mostra a multiplicação

Aritmética

Aritmética com

com Inteiros

Inteiros

Números Inteiros sem sinais

3. O produto total é obtido somando-se os produtos parciais. Para isso, cada produto parcial sucessivo é deslocado um dígito para a esquerda, em relação ao produto parcial anterior.

4. A multiplicação de números inteiros binários de n bits resulta em um produto com até 2n bits de comprimento.

Aritmética Aritmética com com Inteiros Inteiros Números Inteiros sem sinais 3. O produto total é obtido

Aritmética

Aritmética com

com Inteiros

Inteiros

Aritmética Aritmética com com Inteiros Inteiros
Aritmética Aritmética com com Inteiros Inteiros

Aritmética

Aritmética com

com Inteiros

Inteiros

Números Inteiros sem sinais

Multiplicações podem ser feitas de modo mais eficiente do que na forma usual, em que são feitas usando-se lápis e papel. Primeiro, podemos acumular imediatamente cada produto parcial obtido, em vez de esperar o cálculo de todos os produtos parciais. Isso elimina a necessidade de armazenar todos os produtos parciais; é preciso, dessa maneira, um número menor de registradores. Segundo, podemos poupar algum tempo na geração de produtos parciais. Para cada 1 no multiplicador, é necessário realizar uma operação de soma e um deslocamento; para cada 0, apenas um deslocamento é necessário.

Aritmética Aritmética com com Inteiros Inteiros Números Inteiros sem sinais Multiplicações podem ser feitas de modo

Aritmética

Aritmética com

com Inteiros

Inteiros

Números Inteiros sem sinais

A Figura 9.8a mostra uma implementação possível que emprega essas idéias. O multiplicador e o multiplicando são carregados em dois registradores (Q e M). Também é necessário um terceiro registrador, o registrador A, que é inicializado com valor 0. Existe ainda um registra- dor C, de 1 bit, inicializado com 0, que contém um potencial bit 'vai-um' resultante da adição.

Aritmética Aritmética com com Inteiros Inteiros Números Inteiros sem sinais A Figura 9.8a mostra uma implementação

Aritmética

Aritmética com

com Inteiros

Inteiros

Aritmética Aritmética com com Inteiros Inteiros

Aritmética

Aritmética com

com Inteiros

Inteiros

Aritmética Aritmética com com Inteiros Inteiros
Aritmética Aritmética com com Inteiros Inteiros

Aritmética

Aritmética com

com Inteiros

Inteiros

Multiplicação de números em complemento de dois

Vimos que é possível fazer adição e subtração de números na notação em complemento de dois tratando-os como números inteiros sem sinal. Considere o seguinte:

1001

+ 0011

1100

Se esses números forem considerados números inteiros sem sinal, então estaremos fazendo a adição 9 (1001) mais 3 (0011) para obter 12 (1100). Como os números são representados em complementos de dois, estamos de fato fazendo a adição -7 (1001) mais 3 (0011) e obtendo -4 (1100).

Aritmética Aritmética com com Inteiros Inteiros Multiplicação de números em complemento de dois Vimos que é

Aritmética

Aritmética com

com Inteiros

Inteiros

Multiplicação de números em complemento de dois

Infelizmente, esse esquema simples não funciona para a multiplicação. Para mostrar isso, consideramos novamente a Figura 9.7. Multiplicando 11 (1011) por 13 (1101), obtemos 143 (10001111). Se interpretarmos esses números como números em complemento de dois, te- remos -5 (1011) vezes -3 (1101), que é igual a -113 (10001111).

Aritmética Aritmética com com Inteiros Inteiros Multiplicação de números em complemento de dois Infelizmente, esse esquema

Aritmética

Aritmética com

com Inteiros

Inteiros

Multiplicação de números em complemento de dois

Esse exemplo mostra que a multiplicação direta não funciona se o multiplicando e o multiplicador são negativos. De fato, ela não funciona nos casos em que o multiplicando ou o multiplicador é negativo. Para ver isso, voltamos à Figura 9.7 para explicar o que está sendo feito em termos de operações com potências de 2.

Aritmética Aritmética com com Inteiros Inteiros Multiplicação de números em complemento de dois Esse exemplo mostra

Aritmética

Aritmética com

com Inteiros

Inteiros

Multiplicação de números em complemento de dois

Lembre-se de que qualquer número binário sem sinal pode ser expresso como uma soma de potências de 2. Portanto:

Aritmética Aritmética com com Inteiros Inteiros Multiplicação de números em complemento de dois Lembre-se de que
Aritmética Aritmética com com Inteiros Inteiros Multiplicação de números em complemento de dois Lembre-se de que

Aritmética

Aritmética com

com Inteiros

Inteiros

Multiplicação de números em complemento de dois

A multiplicação de um número binário por 2n é feita deslocando esse número n bits para a esquerda. Com isso em mente, a Figura 9.10 reproduz o exemplo da Figura 8.7, mostrando a geração dos produtos parciais por multiplicação explícita. A única diferença na Figura 8.10 é reconhecer que os produtos parciais devem ser vistos como números de 2n bits, gerados a partir de um multiplicando de n bits.

Aritmética Aritmética com com Inteiros Inteiros Multiplicação de números em complemento de dois A multiplicação de

Aritmética

Aritmética com

com Inteiros

Inteiros

Multiplicação de números em complemento de dois

Dessa maneira, o multiplicando 1011 de 4 bits é armazenado como um número inteiro sem sinal em uma palavra de 8 bits, ou seja, como 00001011. Cada produto parcial (exceto o correspondente a 2°) é constituído desse número deslocado para a esquerda, com as posições não ocupadas à direita preenchidas com zeros (por exemplo, um deslocamento para a esquer- da de duas posições produz 00101100).

Aritmética Aritmética com com Inteiros Inteiros Multiplicação de números em complemento de dois Dessa maneira, o

Aritmética

Aritmética com

com Inteiros

Inteiros

Multiplicação de números em complemento de dois

Se esses números são tratados como números inteiros sem sinal, a multiplicação 9 x 3 = 27 prossegue da forma usual. No entanto, se 1001 for interpretado como o número em complemento de dois que representa o valor -7, então cada produto parcial deverá ser um número negativo, em complemento de dois, de 2n (8) bits, como mostrado na Figura 8.11b. Note que isso pode ser feito estendendo cada produto parcial para a esquerda, com bits de valor 1.

Aritmética Aritmética com com Inteiros Inteiros Multiplicação de números em complemento de dois Se esses números

Aritmética

Aritmética com

com Inteiros

Inteiros

Multiplicação de números em complemento de dois

Se esses números são tratados como números inteiros sem sinal, a multiplicação 9 x 3 = 27 prossegue da forma usual. No entanto, se 1001 for interpretado como o número em complemento de dois que representa o valor -7, então cada produto parcial deverá ser um número negativo, em complemento de dois, de 2n (8) bits, como mostrado na Figura 8.11b. Note que isso pode ser feito estendendo cada produto parcial para a esquerda, com bits de valor 1.

Aritmética Aritmética com com Inteiros Inteiros Multiplicação de números em complemento de dois Se esses números

Aritmética

Aritmética com

com Inteiros

Inteiros

Multiplicação de números em complemento de dois

É fácil perceber que a multiplicação direta também não funciona se o multiplicador é negativo. A razão é que, nesse caso, os bits do multiplicador não correspondem aos deslocamentos e às multiplicações que devem ocorrer. Por exemplo, considere o número decimal -3, escrito em complemento de dois com 4 bits como 1101.

Aritmética Aritmética com com Inteiros Inteiros Multiplicação de números em complemento de dois É fácil perceber

Aritmética

Aritmética com

com Inteiros

Inteiros

Se calcularmos os produtos parciais simplesmente com base no valor de cada posição de bit, obteremos a seguinte correspondência:

1101 - (1x2 3 +1x2 2 +0x2 1 +1x2°)=-(2 3 +2 2 +2°)

Aritmética Aritmética com com Inteiros Inteiros Se calcularmos os produtos parciais simplesmente com base no valor

Aritmética

Aritmética com

com Inteiros

Inteiros

Aritmética Aritmética com com Inteiros Inteiros
Aritmética Aritmética com com Inteiros Inteiros

Aritmética

Aritmética com

com Inteiros

Inteiros

De fato, o que se deseja obter é -(21 + 2°). Portanto, o multiplicador não pode ser usado diretamente da maneira como descrevemos.

Existem diversas soluções possíveis para esse dilema. Uma delas seria converter o multiplicador e o multiplicando para números positivos, efetuar a multiplicação e, então, caso o sinal dos dois números originais seja diferente, tomar o complemento de dois do resultado. Os projetistas têm preferido usar técnicas que não requeiram esse passo final de transformação. Um dos algoritmos mais usados é o algoritmo de Booth. Esse algoritmo tem também a vantagem de efetuar a multiplicação de maneira mais rápida do que em uma abordagem mais direta.

Aritmética Aritmética com com Inteiros Inteiros De fato, o que se deseja obter é -(21 +

Aritmética

Aritmética com

com Inteiros

Inteiros

Aritmética Aritmética com com Inteiros Inteiros
Aritmética Aritmética com com Inteiros Inteiros

Aritmética

Aritmética com

com Inteiros

Inteiros

Aritmética Aritmética com com Inteiros Inteiros
Aritmética Aritmética com com Inteiros Inteiros

Aritmética

Aritmética com

com Inteiros

Inteiros

Divisão

A divisão é, de certa maneira, mais complexa que a multiplicação, embora seja baseada nos mesmos princípios gerais. Como antes, a base para o algoritmo é a abordagem usada ao efetuar a operação com lápis e papel, e a operação envolve repetidas execuções de adição, subtração e deslocamento.

Aritmética Aritmética com com Inteiros Inteiros Divisão A divisão é, de certa maneira, mais complexa que

Aritmética

Aritmética com

com Inteiros

Inteiros

Aritmética Aritmética com com Inteiros Inteiros
Aritmética Aritmética com com Inteiros Inteiros

Aritmética

Aritmética com

com Inteiros

Inteiros

Divisão

A divisão é, de certa maneira, mais complexa que a multiplicação, embora seja baseada nos mesmos princípios gerais. Como antes, a base para o algoritmo é a abordagem usada ao efetuar a operação com lápis e papel, e a operação envolve repetidas execuções de adição, subtração e deslocamento.

Aritmética Aritmética com com Inteiros Inteiros Divisão A divisão é, de certa maneira, mais complexa que

Aritmética

Aritmética com

com Inteiros

Inteiros

Divisão

A Figura 9.15 mostra um exemplo de divisão de números inteiros binários sem sinal. É instrutivo descrever o processo em detalhes. Primeiramente, os bits do dividendo são examinados, da esquerda para a direita, até que se obtenha um conjunto de bits que represente um número maior ou igual ao divisor. Quando esse número é encontrado, diz-se que o divisor divide o número. Enquanto isso não ocorre, são introduzidos Os no quociente, da esquerda para a direita.

Aritmética Aritmética com com Inteiros Inteiros Divisão A Figura 9.15 mostra um exemplo de divisão de

Aritmética

Aritmética com

com Inteiros

Inteiros

Divisão

Quando esse evento ocorre, é colocado um 1 no quociente e o divisor é subtraído do dividendo parcial. O resultado é conhecido como resto parcial. Desse ponto em diante, a divisão segue um padrão cíclico. A cada ciclo, bits adicionais do dividendo são anexados ao resto parcial, até que o resultado seja maior ou igual ao divisor. Como antes, o divisor é subtraído desse número, para produzir um novo resto parcial. O processo continua até que todos os bits do dividendo tenham sido examinados.

Aritmética Aritmética com com Inteiros Inteiros Divisão Quando esse evento ocorre, é colocado um 1 no

Representações dede Números

Representações

Números dede Ponto

Ponto

Flutuante

Flutuante

Princípios

Usando uma notação de ponto fixo (por exemplo, complemento de dois), é possível representar certa faixa de números inteiros positivos e negativos, centrada em 0. Esse formato permite também a representação de números com parte fracionária, bastando fixar uma posição adequada para a vírgula que separa a parte inteira e a parte fracionária.

de de Números Representações de de Ponto Flutuante Flutuante Princípios Usando uma notação de ponto

Representações dede Números

Representações

Números dede Ponto

Ponto

Flutuante

Flutuante

Princípios

Essa abordagem tem, entretanto, algumas

limitações. Ela não possibilita representar

números muito grandes nem frações muito

pequenas. Além disso, em uma divisão de dois

números muito grandes, a parte fracionária do

quociente pode ser perdida.

de de Números Representações de de Ponto Flutuante Flutuante Princípios Essa abordagem tem, entretanto, algumas

Representações dede Números

Representações

Números dede Ponto

Ponto

Flutuante

Flutuante

Princípios

Para números decimais, essa limitação é superada com o uso da notação científica. Por exemplo, 976.000.000.000.000 pode ser representado como 9,76 x 10 14 e 0,0000000000000976, como 9,76 x 10 -14 . A vírgula é deslizada dinamicamente para uma posição conveniente e é usado um expoente de 10 adequado, para representar o mesmo valor original. Isso possibilita expressar números muito grandes e muito pequenos com poucos dígitos.

de de Números Representações de de Ponto Flutuante Flutuante Princípios Para números decimais, essa limitação

Representações dede Números

Representações

Números dede Ponto

Ponto

Flutuante

Flutuante

Princípios

Os princípios usados na representação de números binários de ponto flutuante podem ser bem explicados por meio de um exemplo. A Figura 9.18a mostra um formato típico de números de ponto flutuante de 32 bits.

O bit mais à esquerda armazena o sinal do número (0 = positivo; 1 = negativo).

O valor do expoente é armazenado nos 8 bits seguintes. A representação usada é conhecida como representação polarizada.

de de Números Representações de de Ponto Flutuante Flutuante Princípios Os princípios usados na representação

Representações dede Números

Representações

Números dede Ponto

Ponto

Flutuante

Flutuante

de de Números Representações de de Ponto Flutuante Flutuante
de de Números Representações de de Ponto Flutuante Flutuante

Representações dede Números

Representações

Números dede Ponto

Ponto

Flutuante

Flutuante

Princípios

Um valor fixo, chamado de polarização, é subtraído ao valor desse campo para se obter o verdadeiro valor do expoente. Tipicamente, a polarização é igual a (2k-1 -1), onde k é o número de bits do expoente binário. Nesse caso, o campo de 8 bits pode conter números de 0 a 255. Com uma polarização igual a 127, os verdadeiros valores dos expoentes estão compreendidos na faixa de -127 a +128. Nesse exemplo, considera-se que a base é 2.

de de Números Representações de de Ponto Flutuante Flutuante Princípios Um valor fixo, chamado de

Representações dede Números

Representações

Números dede Ponto

Ponto

Flutuante

Flutuante

Princípios

A Figura 9.18b mostra alguns exemplos de números armazenados nesse formato. Note as seguintes características:

• O sinal é armazenado no primeiro bit da palavra.

• O primeiro bit da mantissa verdadeira é sempre 1 e não precisa ser armazenado no campo de mantissa.

• O valor 127 é adicionado ao expoente verdadeiro para ser armazenado no campo de expoente.

• Abase é 2.

de de Números Representações de de Ponto Flutuante Flutuante Princípios A Figura 9.18b mostra alguns

Representações dede Números

Representações

Números dede Ponto

Ponto

Flutuante

Flutuante

Princípios A Figura 9.19 indica a faixa de números que podem ser representados em uma palavra de 32 bits, usando essa representação. Na notação em complemento de dois, podem ser representados todos os números inteiros de -231 a 231 -1, ou seja, um total de 2 32 números distintos. No formato de ponto flutuante da Figura 9.18, números nas seguintes faixas podem ser representados:

• Números negativos entre -{I - 2- 24 ) x 2 128 e ~,5 x 2- 127 • Números positivos entre 0,5 x 2-127 e (I - 2- 24 ) x 2 128

de de Números Representações de de Ponto Flutuante Flutuante Princípios A Figura 9.19 indica a

Representações dede Números

Representações

Números dede Ponto

Ponto

Flutuante

Flutuante

de de Números Representações de de Ponto Flutuante Flutuante

Representações dede Números

Representações

Números dede Ponto

Ponto

Flutuante

Flutuante

Padrão IEEE para representação de números binários de ponto fl utuante

A mais importante representação de ponto flutuante é definida no padrão IEEE 754 (IEEE, 1985). Esse padrão foi desenvolvido para facilitar a portabilidade de programas entre processadores, além de encorajar o desenvolvimento de programas de processamento numérico sofisticados. Ele tem sido largamente adotado, sendo usado em quase todos os processadores e coprocessadores aritméticos modernos.

de de Números Representações de de Ponto Flutuante Flutuante Padrão IEEE para representação de números

Representações dede Números

Representações

Números dede Ponto

Ponto

Flutuante

Flutuante

Padrão IEEE para representação de números binários de ponto fl utuante

O padrão IEEE define um formato simples de 32 bits e um formato duplo de 64 bits (Figura 9.21), com expoentes de 8 e 11 bits, respectivamente. A base implícita é 2. Na adição, o padrão define dois formatos estendidos, simples e duplo, cujo formato exato é dependente de implementação. Os formatos estendidos incluem bits adicionais no expoente (alcance estendido) e na mantissa (precisão estendida).

de de Números Representações de de Ponto Flutuante Flutuante Padrão IEEE para representação de números

Representações dede Números

Representações

Números dede Ponto

Ponto

Flutuante

Flutuante

de de Números Representações de de Ponto Flutuante Flutuante
de de Números Representações de de Ponto Flutuante Flutuante

Representações dede Números

Representações

Números dede Ponto

Ponto

Flutuante

Flutuante

Padrão IEEE para representação de números binários de ponto fl utuante

Eles são usados para cálculos intermediários. O uso desses formatos diminui a chance de o resultado final ser contaminado por excessivo erro de arredondamento, uma vez que fornecem maior precisão. Além disso, como permitem maior alcance, também diminui a chance de overflow em operações intermediárias, o que poderia abortar uma computação cujo resultado final seria representável no formato básico.

de de Números Representações de de Ponto Flutuante Flutuante Padrão IEEE para representação de números

Representações dede Números

Representações

Números dede Ponto

Ponto

Flutuante

Flutuante

Padrão IEEE para representação de

números binários de ponto fl utuante

Uma motivação adicional para o formato

estendido simples é que ele possui alguns dos

benefícios do formato duplo, sem incorrer na

penalidade de tempo normalmente associada a

uma precisão mais alta.

de de Números Representações de de Ponto Flutuante Flutuante Padrão IEEE para representação de números

Representações dede Números

Representações

Números dede Ponto

Ponto

Flutuante

Flutuante

Considerações de precisão Bits de guarda

Mencionamos anteriormente que antes de uma operação de ponto fl utuante o expoente e a mantissa são carregados em registradores da ULA. No caso da mantissa, o tamanho do registrador é quase sempre maior que o número de bits da mantissa mais o bit implícito. O registrador contém bits adicionais, chamados bits de guarda, que são usados para preencher os bits extras até a extremidade direita da mantissa com zeros.

de de Números Representações de de Ponto Flutuante Flutuante Considerações de precisão Bits de guarda

Representações dede Números

Representações

Números dede Ponto

Ponto

Flutuante

Flutuante

Considerações de precisão Bits de guarda

A razão do uso desses bits é mostrada na Figura 9.25. Considere os números no formato IEEE, cuja mantissa tem 24 bits, incluindo um bit 1 implícito, à esquerda da vírgula fracionária. Dois números de valor próximo são,

por exemplo, X = 1,00

00 X 2 1 e Y = 1,11

11 x 2°.

... Se o número menor for subtraído do maior, ele deverá ser deslocado um bit para a direita, para alinhar os expoentes.

...

de de Números Representações de de Ponto Flutuante Flutuante Considerações de precisão Bits de guarda

Representações dede Números

Representações

Números dede Ponto

Ponto

Flutuante

Flutuante

de de Números Representações de de Ponto Flutuante Flutuante
de de Números Representações de de Ponto Flutuante Flutuante

Representações dede Números

Representações

Números dede Ponto

Ponto

Flutuante

Flutuante

Considerações de precisão Arredondamento

Outro detalhe que afeta a precisão do resultado é a política de arredondamento. O resultado de qualquer operação sobre as mantisas geralmente é armazenado em um registrador de tamanho maior. Quando o resultado é colocado novamente no formato de ponto fl utuante, os bits extras devem ser descartados.

de de Números Representações de de Ponto Flutuante Flutuante Considerações de precisão Arredondamento Outro detalhe

Representações dede Números

Representações

Números dede Ponto

Ponto

Flutuante

Flutuante

Considerações de precisão Arredondamento

Diversas técnicas para arredondamento foram exploradas. De fato, o padrão IEEE relaciona quatro abordagens alternativas:

Arredondar para o mais próximo: o resultado é arredondado para o número representável mais próximo.

Arredondar para cima: o resultado é arredondado para cima, na direção de infinito positivo.

Arredondar para baixo: o resultado é arredondado para baixo, na direção de infinito negativo. Arredondar para 0: o resultado é arredondado na direção de zero.

de de Números Representações de de Ponto Flutuante Flutuante Considerações de precisão Arredondamento Diversas técnicas

Representações dede Números

Representações

Números dede Ponto

Ponto

Flutuante

Flutuante

Números não-normalizados

Números não-normalizados são incluídos no padrão IEEE 754 para manipular casos de underflow de expoente. Quando o expoente do resultado é muito pequeno (um expoente negativo com uma magnitude muito grande), o resultado toma-se não-normalizado, deslocando-se os dígitos da fração para a direita e incrementando o expoente a cada deslocamento, até que o expoente esteja dentro da faixa de valores representáveis.

de de Números Representações de de Ponto Flutuante Flutuante Números não-normalizados Números não-normalizados são incluídos