Вы находитесь на странице: 1из 133

Aula 03

Aritmtica do computador
Arquitetura de Computadores
Professor Ricardo Amorim
Prof.ricardoamorim@gmail.com

Introduo

A Unidade Lgica Aritmtica


Representao de Inteiros
Aritmtico com Inteiros
Representao de Ponto flutuante
Aritmtica de Ponto Flutuante

Referncia Bibliogrfica

Objetivo
O funcionalidade da unidade lgica e aritmtica
(ULA), enfocando a representao de nmeros e
as tcnicas para implementar as operaes
aritmticas. Geralmente, os processadores
implementam dois tipos de aritmtica: de
nmeros inteiros ou ponto fixo e de ponto
flutuante. Em ambos os casos, abordamos
primeiro a representao dos nmeros.

Principais Pontos
Os dois aspectos mais importantes da aritmtica
computacional so o modo como os nmeros so
representados (o formato binrio) e os
algoritmos usados para as operaes aritmticas
bsicas (adio, subtrao, multiplicao e
diviso). Isso se aplica tanto para a aritmtica de
nmeros inteiros quanto para a de nmeros de
ponto flutuante.

Principais Pontos
Nmeros de ponto flutuante so expressos na
forma de um nmero (mantissa parte decimal
de logaritmo) multiplicado por uma constante
(base) elevada a uma potncia inteira (expoente).
Eles podem ser usados para representar nmeros
muito grandes e muito pequenos.

Principais Pontos
A maioria dos processadores implementa o
padro IEEE 754 para representao e aritmtica
de nmeros de ponto flutuante. Esse padro
define um formato de 32 bits e de 64 bits.

Apndice Sistema de
Numerao
O Sistema Decimal
Na vida diria, usamos nmeros representados
em um sistema de numerao de base 10, com
dgitos decimais (0, 1, 2, 3, 4, 5, 6, 7, 8, 9),
conhecido como sistema decimal. Considere o
significado do nmero 83. Ele significa oito
dezenas e trs unidades:
83 = (8 x 10) + 3

Apndice Sistema de
Numerao
O Sistema Decimal
O nmero 4728 significa quatro milhares, sete
centenas, duas dezenas e oito unidades:
4728 = (4 x 1000) + (7 x 100) + (2 x 10) + 8

Apndice Sistema de
Numerao
O Sistema Decimal
O sistema decimal assim chamado por usar a
base 10. Isso significa que cada dgito do
nmero multiplicado por 10 elevado
potncia correspondente posio do dgito:
83= (8x101)+(3x100)
4728= (4x103)+(7x102)+(2x101)+(8x10)

Apndice Sistema de
Numerao
O Sistema Decimal
Valores fracionrios so representados do mesmo
modo:
472,83= (4x102)+(7x101)+(2x100)+(8x10-1)+(3x10-2)

Apndice Sistema de
Numerao
O Sistema Decimal
Para evitar confuso, algumas vezes usamos um
nmero subscrito para indicar a base do
sistema de numerao adotado. Por exemplo,
8310 e 472810 so nmeros representados na
notao decimal, ou seja nmeros decimais.

Apndice Sistema de
Numerao
O sistema binrio
No sistema decimal, so usados dez dgitos
distintos para representar os nmeros na base 10.
No sistema binrio, temos apenas dois dgitos, 1
e 0. Portanto, nmeros no sistema binrio so
representados na base 2.

Apndice Sistema de
Numerao
O sistema binrio
Converso entre nmeros binrios e decimais
A converso de um nmero na notao binria
para a notao decimal simples. Basta
multiplicar cada dgito binrio pela potncia de 2
adequada e somar os resultados.

Obtendo o valor decimal do seguinte


nmero binrio: 11001110
1

equivale a:

128

64

32

16

Multiplicao:

1x128 1x64

0x32

0x16

1x8

1x4

1x2

0x1

Resulta em:

128

Somando tudo:

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

Resulta em:

206

64

Exemplo 2 nmero binrio:


11100010
1

equivale a:

128

64

32

16

Multiplicao:

1x128 1x64 1x32 0x16 0x8 0x4 1x2 0x1

Resulta em:

128

Somando tudo:

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

Resulta em:

226

64

32

Importante
Nota:
Nos exemplos utilizaremos valores de, no mximo,
256, que so valores que podem ser representados
por 8 dgitos binrios, ou na linguagem do
computador 8 bits, o que equivale exatamente a um
byte.

Apndice Sistema de
Numerao
O sistema binrio
Converso entre nmeros binrios e decimais
Para converter a notao decimal em notao
binria, o nmero inteiro e a parte fracionria so
tratados separadamente. Suponha que queremos
converter um nmero inteiro decimal N para a
forma binria. Se dividirmos N por 2, no sistema
decimal, obtendo um quociente N1 e um resto R1.

Apndice Sistema de
Numerao
O sistema binrio
Converso entre nmeros binrios e decimais
Ou seja, podemos converter da base 10 para a
base 2 por meio de repetidas divises por 2. O
resto e o quociente final, 1, nos do os dgitos
binrios de N, na ordem do menor para o maior
dgito significativo. A Figura 9.27 mostra dois
exemplos.

Apndice Sistema de
Numerao

Regra para fazer esta converso

Podemos ento concluir que 8(10)=1000(2) ( 8 = 123+ +022+


021+020 )

Outro Exemplo

Podemos ento concluir que 66(10)=1000010(2)


( 66 = 126+ + 025+024+023+022+121+020 )

Atividade
Notao decimal Notao binria
220
101001
50
1011
79
10000111

Apndice Sistema de
Numerao
Em virtude da natureza binria inerente dos
componentes de um computador digital, todas
as formas de dados so representadas, dentro do
computador, por cdigos binrios.

Apndice Sistema de
Numerao

Notao hexadecimal
No entanto, embora o sistema binrio seja
conveniente para computadores,
excessivamente ineficiente para seres
humanos. Por isso, a maioria dos profissionais
de computao que passam grande parte do
tempo trabalhando com dados manipulados no
computador prefere uma notao mais compacta.

Apndice Sistema de
Numerao
Notao hexadecimal
Que notao usar?
Uma possibilidade seria a notao decimal. Essa
notao certamente mais compacta que a
notao binria, mas desconfortvel devido
tediosa converso entre a base 2 e a base 10.

Apndice Sistema de
Numerao
Notao hexadecimal
Os computadores costumam utilizar o byte ou octeto como
unidade bsica da memria; e, devido a um byte representar
28 = 256 valores possveis, e isto poder representar-se como
28 = 24 x 24 = 16 x 16 = 1 x 162 + 0 x 161 + 0 x 160, o que,
segundo o teorema geral da numerao posicional, equivale ao
nmero em base 16 10016, dois dgitos hexadecimais
correspondem exatamente permitem representar a mesma linha de
inteiros a um byte.

Apndice Sistema de
Numerao

Apndice Sistema de
Numerao
Notao hexadecimal
Em vez disso, adotada uma notao conhecida
como hexadecimal. Os dgitos binrios so
agrupados em conjuntos de quatro. A cada
combinao possvel de quatro dgitos binrios
atribudo um smbolo, como a seguir:

Apndice Sistema de
Numerao

Apndice Sistema de
Numerao

Notao hexadecimal
Por serem usados 16 smbolos, a notao chamada
hexadecimal e esses 16 smbolos so os dgitos
hexadecimais.
A notao hexadecimal usada no apenas para
representar nmeros inteiros. Ela tambm usada como
uma notao concisa para representar qualquer
seqncia de dgitos binrios, mesmo que representem
texto, nmeros ou algum outro tipo de dado.

Apndice Sistema de
Numerao

Notao hexadecimal
As razes para se usar notao hexadecimal so as
seguintes:
1. mais compacta que a notao binria.
2. Na maioria dos computadores, os dados binrios
tm um tamanho que mltiplo de 4 bits e,
portanto, mltiplo de um dgito hexadecimal.
3. extremamente fcil converter entre as notaes
binria e hexadecimal.

Apndice Sistema de
Numerao
Notao hexadecimal
O processo realizado to naturalmente que um
programador experiente pode converter
representaes visuais de dados binrios para
seus equivalentes hexadecimais mentalmente,
sem precisar escrever. bem provvel que voc
nunca necessite dessa habilidade em
particular.

Notao hexadecimal
Vimos que a numerao hexadecimal consiste no uso
de 16 smbolos para expressar um nmero. So eles:
0123456789ABCDEF
Os dgitos 0 - 9 possuem os mesmos valores dos
dgitos 0 - 9 decimais. Porm, os smbolos A - F
correspondem aos valores decimais 10 - 15, onde A
10, B 11, C 12... e F 15.

Notao hexadecimal
Converso de Nmeros Hexadecimais
Para converter o nmero 2AB316 para o sistema decimal,
multiplicamos o valor do nmero pelo valor da casa:
2 = 2 x 163 = 2 x 4096 = 8192
A = A x 162 = 10 x 256 = 2560
B = B x 161 = 11 x 16 = 176
3 = 3 x 160 = 3 x 1 = 3
Para finalizar, somamos todos os resultados:
8192 + 2560 + 176 + 3 = 1093110

Notao hexadecimal
Converso de Nmeros Decimais para
Hexadecimais
Para converter um nmero como 3456, por
exemplo, em hexadecimal, executamos a
seguinte operao:
Dividimos o 3456 pelo maior 16n possvel, ou
2
seja, por 16 (256):

Notao hexadecimal
Dividimos o 3456 pelo maior 16n possvel, ou
2
seja, por 16 (256):

Dividimos o resto (128) pelo maior 16n possvel


novamente, ou seja, por 161 = 16:

Notao hexadecimal
Para finalizar a converso, seguimos a tabela:

Como o resultado da primeira diviso (13) igual ao nmero


D hexadecimal e o resultado da segunda diviso (8) igual ao
nmero 8 hexadecimal, podemos concluir que:
3456 = D80

Notao hexadecimal
Outra maneira de converter 345610
3456 / 16 = 216 resto 0
216 / 16 = 13 resto 8
Resultado 13, 8, 0 = D8016

Notao hexadecimal
Outro exemplo de converte Decimal para
Hexadecimal 102410
1024 / 16 = 64 resto 0
64 / 16 = 4 resto 0
resultado 40016

Notao hexadecimal
Hexadecimal para Decimal 40016
4 = 4 x 162 = 4 x 256 = 1024
0 = 0 x 161 = 0
0 = 0 x 160 = 0
1024 + 0 + 0 =102410
Outro Exemplo de Decimal para Hexadecimal 4
410 o prprio 416 pois o hexadecimal formado 1 2 3 4 6.. F.

Notao Octal
Sistema Octal um sistema de numerao cuja
base 8, ou seja, utiliza 8 smbolos para a
representao de quantidade. No ocidente, estes
smbolos so os algarismos arbicos:
01234567

Notao Octal
Converter o nmero octal 764 para o sistema
decimal:
76408
7648 = 7 x 8 + 6 x 8 + 4 x 8 =
448 + 48 + 4 = 50010

Sistema Numrico
Resumo

Sistema Numrico
Usando Planilha

A Unidade Lgica Aritmtica


A ULA a parte do computador que de fato executa
as operaes aritmticas e lgicas sobre os dados.
Todos os outros elementos do computador - unidade
de controle, registradores, memria, E/S - servem
principalmente, para trazer os dados a serem
processados pela ULA e receber os resultados das
operaes efetuadas. De certo modo, a ULA constitui
o ncleo ou a essncia de um computador.

A Unidade Lgica Aritmtica


Assim como todos os demais componentes
eletrnicos de um computador, a ULA baseada
em dispositivos lgicos digitais simples, capazes
de armazenar dgitos binrios e efetuar
operaes simples de lgica booleana.

A Unidade Lgica Aritmtica


A Figura 9.1 indica, em termos gerais, como a
ULA conectada com o restante do processador.
Os dados so fornecidos ULA em
registradores e os resultados de uma operao
so armazenados em registradores. Esses
registradores so reas de armazenamento
temporrio dentro do processador, conectadas
ULA por meio de caminhos de sinal.

A Unidade Lgica Aritmtica

A Unidade Lgica Aritmtica


A ULA pode tambm ativar bits especiais (fl ags) para
indicar o resultado de uma operao. Por exemplo, caso o
resultado de uma operao exceda a capacidade de
armazenamento de um registrador isso indicado
atribuindo o valor 1 ao bit de overflow. Esses bits
especiais so tambm armazenados em registradores
internos do processador. A unidade de controle fornece
sinais para controlar a operao da ULA e a transferncia de
dados entre a ULA e os registradores.

A Unidade Lgica Aritmtica


No sistema de nmeros binrios, possvel
representar nmeros arbitrrios usando os dgitos
zero e um, o sinal de subtrao (-, para
nmeros negativos) e a vrgula decimal (que
separa a parte inteira e a parte fracionria do
nmero). Por exemplo:
-1101,01012 = -13,312510

A Unidade Lgica Aritmtica


Entretanto, para armazenar e processar esses
nmeros no computador, no possvel usar os
sinais de menos e vrgula. Apenas dgitos
binrios (0 e 1) podem ser usados para a
representao de nmeros. Isso no constitui um
problema se quisermos apenas representar
nmeros inteiros no negativos.

A Unidade Lgica Aritmtica


Por exemplo, uma palavra de 8 bits pode ser
usada para representar nmeros de 0 a 255.
00000000 = 0
00000001 = 1
00101001 = 41
10000000 = 128
11111111 = 255

A Unidade Lgica Aritmtica


Representao sinal-magnitude
Diversas convenes alternativas so usadas para
representar nmeros 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 nmero ser positivo; se for 1, o
nmero ser negativo.

A Unidade Lgica Aritmtica


Representao sinal-magnitude
A forma mais simples de representao que
emprega um bit de sinal a representao sinalmagnitude. Em uma palavra de n bits, os n - 1
bits mais direita representam a magnitude do
nmero inteiro. Por exemplo:
+18 = 00010010
-18 = 10010010 (sinal-magnitude)

A Unidade Lgica Aritmtica


Representao sinal-magnitude
A representao sinal-magnitude apresenta
diversas desvantagens. Uma delas que, para
efetuar operaes de adio e subtrao, preciso
considerar tanto a magnitude quanto o sinal dos dois
operandos. Outra desvantagem que existem duas
representaes para 0:
+ 010 = 00000000
- 010 =10000000 (sinal-magnitude)

A Unidade Lgica Aritmtica


Representao sinal-magnitude
Isso inconveniente, pois mais difcil testar se um
valor igual a 0 (operao que executada
freqentemente) do que no caso em que existe uma
nica representao para 0.
Em virtude dessas desvantagens, a representao sinalmagnitude raramente usada na implementao da
parte inteira de uma ULA. O esquema mais comum a
representao em complemento de dois.

A Unidade Lgica Aritmtica


Representao em complemento de dois
Assim como a representao sinal-magnitude, a
representao em complemento de dois usa o bit mais
significativo como bit de sinal, o que torna fcil testar
se um nmero inteiro positivo ou negativo.
Entretanto, os demais bits so interpretados de
maneira diferente. A Tabela 9.1 relaciona as
caractersticas-chave da representao e da aritmtica
em complemento de dois.

A Unidade Lgica Aritmtica

A Unidade Lgica Aritmtica


Representao em complemento de dois
A maioria das abordagens da representao em
complemento de dois define apenas as regras
para representar os nmeros negativos, no
incluindo qualquer prova formal de que esse
esquema 'funciona'.

A Unidade Lgica Aritmtica


Representao em complemento de dois
Dattatreya (1993), que sugere que essa representao ser
bem compreendida se for definida em termos de uma soma
ponderada de bits, como foi feito anteriormente para o caso
das representaes sem sinal e de sinal-magnitude. A
vantagem desse tratamento no deixar dvidas de que as
regras definidas para as operaes aritmticas na notao
em complemento de dois funcionam em todos os casos.

A Unidade Lgica Aritmtica


Converso entre representaes com nmeros
de bits diferentes
Algumas vezes desejvel converter a
representao de um nmero inteiro com n
bits para sua representao com m bits, onde
m > n. Na notao sinal-magnitude, isso pode
ser feito facilmente: basta mover o bit de sinal
para a posio mais esquerda e preencher as
demais posies novas com zeros.

A Unidade Lgica Aritmtica


Converso entre representaes com nmeros 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 Unidade Lgica Aritmtica


Converso entre representaes com nmeros de bits
diferentes
Esse procedimento no funciona no caso de nmeros 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 nmero acima pode ser verificado pela seqncia de
valores da Figura 9.2.

A Unidade Lgica Aritmtica

A Unidade Lgica Aritmtica


Converso entre representaes com nmeros de bits diferentes
A regra para converter uma representao em complemento de dois em
outra com maior nmero de bits consiste em mover o bit de sinal para a
posio mais esquerda e preencher as novas posies de bit com
valor igual ao do bit de sinal. Para nmeros positivos, isso significa
preencher com zeros e, para nmeros negativos, preencher com uns. Isso
chamado extenso de sinal.
- 18 =111011110 (complemento de dois, 8 bits)
- 18 = 11111111111101110 (complemento de dois, 16 bits).

A Unidade Lgica Aritmtica


Representao de ponto fixo
Mencionamos anteriormente que as representaes
discutidas nesta seo so conhecidas como
representaes de ponto fixo. Isso ocorre porque elas
fixam a posio da vrgula decimal como a posio
direita do bit menos significativo. Essas
representaes podem tambm ser usadas pelo
programador para fraes binrias, se supusermos a
vrgula decimal posicionada implicitamente em outra
posio.

Aritmtica com Inteiros


Negao
Na representao sinal-magnitude, a regra para a negao de
um nmero inteiro simples: basta inverter o valor do bit de
sinal. Na notao em complemento de dois, a negao de um
nmero inteiro obtida pelos seguintes passos:
1. Tome o complemento booleano de cada bit do nmero
(incluindo o bit de sinal), isto , troque cada 1 por 0 e cada
0 por 1.
2. Adicione 1 ao resultado, visto como um nmero inteiro
binrio sem sinal.

Aritmtica com Inteiros


Negao
Como se pode esperar, o resultado da dupla
negao de um nmero o prprio nmero:
- 18 = 11101110 (complemento de dois)
complemento bit a bit = 00010001
+ _____1
00010010 = + 18

Aritmtica com Inteiros


A tabuada da soma aritmtica em binrio muito simples. So
poucas regras:

0+0=0
0+1=1
1+0=1
1 + 1 = 0 (e "vai 1" para o dgito de ordem
superior)
1 + 1 + 1 = 1 (e "vai 1" para o dgito de ordem
superior)

Aritmtica com Inteiros


Exemplo:

Efetuar 011100 + 011010


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

Aritmtica com Inteiros


Vamos ver agora a tabuada da subtrao:

0-0=0
0 - 1 = 1 ("vem um do prximo")
1-0=1
1-1=0

Aritmtica com Inteiros


Vamos ver agora a tabuada da subtrao:

0-0=0
0 - 1 = 1 ("vem um do prximo")
1-0=1
1-1=0
Obs.: Como impossvel tirar 1 de zero, o artifcio "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 ento subtrair 1 do dgito de ordem superior (aquele 1 que se
"pediu emprestado"). Vamos lembrar que esse algoritmo
exatamente o mesmo da subtrao em decimal a que j estamos
acostumados desde primrio

Aritmtica com Inteiros


Exemplo:

Efetuar 111100 - 011010


---02-> "vem um"
11100
01010 ---------10010

Aritmtica com Inteiros


Vamos ver agora a tabuada da Multiplicao:

0x0=0
0x1=0
1x0=0
1x1=1
Exemplo:
Efetuar 110 x 101
110
101
x---------110
000
110
+--------11110

Aritmtica com Inteiros


Para a diviso no existe tabuada pois na sua
resoluo utilizam-se apenas operaes de
multiplicao e subtrao.
0:0=0
0:1=0
1 : 0 = no permitido
1:1=1

Aritmtica com Inteiros


Adio e subtrao
A adio de nmeros na representao em complemento de
dois apresentada na Figura 9.3. Os quatro primeiros
exemplos mostram operaes bem-sucedidas. Se o
resultado da operao for positivo, ser obtido um nmero
positivo na notao binria. Se for negativo, ser obtido um
nmero 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.

Aritmtica com Inteiros

Aritmtica com Inteiros


Adio e subtrao
O resultado de uma adio pode ter um nmero de bits maior do que o
tamanho da palavra usada. Essa condio denominada overflow. Quando
ocorre overflow, a ULA deve sinalizar esse fato, para que o resultado no
seja utilizado. A deteco de overflow feita de acordo com a seguinte
regra: na adio de dois nmeros, 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 no
havendo 'vai-um' para fora do bit mais significativo.

Aritmtica com Inteiros


Adio e subtrao
A subtrao tambm implementada facilmente,
usando a seguinte regra: para subtrair um nmero S
(subtraendo) de um nmero M (minuendo), pegue o
complemento de dois (negao) de S e acrescente esse
valor a M. Dessa maneira, a subtrao implementada
usando a adio, como indicado na Figura 9.5. Os dois
ltimos exemplos mostram que pode ocorrer overflow.

Aritmtica com Inteiros

Aritmtica com Inteiros


Adio e subtrao
A Figura 9.6 sugere os caminhos de dados e
elementos de hardware necessrios para efetuar
a adio e a subtrao. O elemento central um
somador binrio (ou meio-somador), que recebe
dois nmeros e produz como resultado a soma
desses nmeros e uma indicao de overflow.

Aritmtica com Inteiros

Aritmtica com Inteiros


Adio e subtrao
O somador binrio trata os dois operandos como
nmeros inteiros sem sinal. (Um circuito lgico
que implementa o somador mostrado no
Apndice A.) Esses dois operandos so
apresentados ao somador em dois registradores,
designados, nesse caso, como registradores A e
B.

Aritmtica com Inteiros


Adio e subtrao
O resultado pode ser armazenado em um desses
registradores ou em um terceiro. A ocorrncia de
overflow indicada por um bit de overflow (0 =
no ocorreu overflow; 1 = ocorreu overflow). Na
operao de subtrao, o subtraendo (registrador
B) passado por um circuito que calcula seu
complemento de dois, sendo esse valor, ento,
passado para o somador.

Aritmtica com Inteiros


Multiplicao
Comparada s operaes de adio e
subtrao, a multiplicao uma operao
complexa, seja implementada em hardware
seja em software. Uma grande variedade
de algoritmos de multiplicao tem sido
usada em diversos computadores.

Aritmtica com Inteiros


Multiplicao
O propsito desta subseo dar ao leitor
uma noo do tipo de abordagem
tipicamente adotada. Comeamos pelo
problema mais simples de multiplicar dois
nmeros inteiros sem sinal (no negativos),
para depois examinar uma das tcnicas
mais usadas para a multiplicao de
nmeros em complemento de dois.

Aritmtica com Inteiros


Nmeros Inteiros sem sinais
A Figura 9.7 mostra a multiplicao de nmeros inteiros binrios
sem sinal, tal como feita com lpis e papel. Diversas
observaes importantes podem ser feitas:
1. A multiplicao envolve a gerao de produtos parciais, um para cada
dgito do multiplicador. Esses produtos parciais so somados para a
obteno do produto final.
2. Os produtos parciais so determinados facilmente. Quando o bit do
multiplicador O, o produto parcial O. Quando 1, o produto parcial
o prprio multiplicando.

Aritmtica com Inteiros


Nmeros Inteiros sem sinais
3. O produto total obtido somando-se os produtos
parciais. Para isso, cada produto parcial sucessivo
deslocado um dgito para a esquerda, em
relao ao produto parcial anterior.
4. A multiplicao de nmeros inteiros binrios de
n bits resulta em um produto com at 2n bits de
comprimento.

Aritmtica com Inteiros

Aritmtica com Inteiros


Nmeros Inteiros sem sinais
Multiplicaes podem ser feitas de modo mais eficiente do que na
forma usual, em que so feitas usando-se lpis e papel. Primeiro,
podemos acumular imediatamente cada produto parcial obtido, em vez
de esperar o clculo de todos os produtos parciais. Isso elimina a
necessidade de armazenar todos os produtos parciais; preciso, dessa
maneira, um nmero menor de registradores. Segundo, podemos
poupar algum tempo na gerao de produtos parciais. Para cada 1 no
multiplicador, necessrio realizar uma operao de soma e um
deslocamento; para cada 0, apenas um deslocamento necessrio.

Aritmtica com Inteiros


Nmeros Inteiros sem sinais
A Figura 9.8a mostra uma implementao possvel
que emprega essas idias. O multiplicador e o
multiplicando so carregados em dois registradores (Q
e M). Tambm necessrio um terceiro registrador, o
registrador A, que inicializado com valor 0. Existe
ainda um registra- dor C, de 1 bit, inicializado com 0,
que contm um potencial bit 'vai-um' resultante da
adio.

Aritmtica com Inteiros

Aritmtica com Inteiros

Aritmtica com Inteiros


Multiplicao de nmeros em complemento de dois
Vimos que possvel fazer adio e subtrao de nmeros na
notao em complemento de dois tratando-os como nmeros
inteiros sem sinal. Considere o seguinte:
1001
+ 0011
1100
Se esses nmeros forem considerados nmeros inteiros sem
sinal, ento estaremos fazendo a adio 9 (1001) mais 3 (0011)
para obter 12 (1100). Como os nmeros so representados em
complementos de dois, estamos de fato fazendo a adio -7 (1001)
mais 3 (0011) e obtendo -4 (1100).

Aritmtica com Inteiros


Multiplicao de nmeros em complemento
de dois
Infelizmente, esse esquema simples no funciona para
a multiplicao. Para mostrar isso, consideramos
novamente a Figura 9.7. Multiplicando 11 (1011) por
13 (1101), obtemos 143 (10001111). Se interpretarmos
esses nmeros como nmeros em complemento de
dois, te- remos -5 (1011) vezes -3 (1101), que igual a
-113 (10001111).

Aritmtica com Inteiros


Multiplicao de nmeros em
complemento de dois
Esse exemplo mostra que a multiplicao direta
no funciona se o multiplicando e o multiplicador
so negativos. De fato, ela no 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
operaes com potncias de 2.

Aritmtica com Inteiros


Multiplicao de nmeros em complemento de dois
Lembre-se de que qualquer nmero binrio sem sinal pode ser
expresso como uma soma de potncias de 2. Portanto:

Aritmtica com Inteiros


Multiplicao de nmeros em complemento de
dois
A multiplicao de um nmero binrio por 2n feita
deslocando esse nmero n bits para a esquerda. Com isso em
mente, a Figura 9.10 reproduz o exemplo da Figura 8.7,
mostrando a gerao dos produtos parciais por multiplicao
explcita. A nica diferena na Figura 8.10 reconhecer que
os produtos parciais devem ser vistos como nmeros de 2n
bits, gerados a partir de um multiplicando de n bits.

Aritmtica com Inteiros


Multiplicao de nmeros em complemento
de dois
Dessa maneira, o multiplicando 1011 de 4 bits
armazenado como um nmero inteiro sem sinal em
uma palavra de 8 bits, ou seja, como 00001011. Cada
produto parcial (exceto o correspondente a 2)
constitudo desse nmero deslocado para a esquerda,
com as posies no ocupadas direita preenchidas
com zeros (por exemplo, um deslocamento para a
esquer- da de duas posies produz 00101100).

Aritmtica com Inteiros


Multiplicao de nmeros em complemento de dois
Se esses nmeros so tratados como nmeros inteiros sem sinal, a
multiplicao 9 x 3 = 27 prossegue da forma usual. No entanto, se 1001
for interpretado como o nmero em complemento de dois que
representa o valor -7, ento cada produto parcial dever ser um nmero
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.

Aritmtica com Inteiros


Multiplicao de nmeros em complemento de dois
Se esses nmeros so tratados como nmeros inteiros sem sinal, a
multiplicao 9 x 3 = 27 prossegue da forma usual. No entanto, se 1001
for interpretado como o nmero em complemento de dois que
representa o valor -7, ento cada produto parcial dever ser um nmero
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.

Aritmtica com Inteiros


Multiplicao de nmeros em complemento de dois
fcil perceber que a multiplicao direta tambm
no funciona se o multiplicador negativo. A razo
que, nesse caso, os bits do multiplicador no
correspondem aos deslocamentos e s multiplicaes
que devem ocorrer. Por exemplo, considere o nmero
decimal -3, escrito em complemento de dois com 4
bits como 1101.

Aritmtica com Inteiros


Se calcularmos os produtos parciais
simplesmente com base no valor de cada
posio de bit, obteremos a seguinte
correspondncia:
1101 - (1x23+1x22+0x21+1x2)=-(23+22+2)

Aritmtica com Inteiros

Aritmtica com Inteiros


De fato, o que se deseja obter -(2 1 + 2). Portanto, o multiplicador no pode ser
usado diretamente da maneira como descrevemos.
Existem diversas solues possveis para esse dilema. Uma delas seria converter o
multiplicador e o multiplicando para nmeros positivos, efetuar a multiplicao e,
ento, caso o sinal dos dois nmeros originais seja diferente, tomar o
complemento de dois do resultado. Os projetistas tm preferido usar tcnicas que
no requeiram esse passo final de transformao. Um dos algoritmos mais usados
o algoritmo de Booth. Esse algoritmo tem tambm a vantagem de efetuar a
multiplicao de maneira mais rpida do que em uma abordagem mais direta.

Aritmtica com Inteiros

Aritmtica com Inteiros

Aritmtica com Inteiros


Diviso
A diviso , de certa maneira, mais complexa
que a multiplicao, embora seja baseada nos
mesmos princpios gerais. Como antes, a base
para o algoritmo a abordagem usada ao efetuar
a operao com lpis e papel, e a operao
envolve repetidas execues de adio,
subtrao e deslocamento.

Aritmtica com Inteiros

Aritmtica com Inteiros


Diviso
A diviso , de certa maneira, mais complexa
que a multiplicao, embora seja baseada nos
mesmos princpios gerais. Como antes, a base
para o algoritmo a abordagem usada ao efetuar
a operao com lpis e papel, e a operao
envolve repetidas execues de adio,
subtrao e deslocamento.

Aritmtica com Inteiros


Diviso
A Figura 9.15 mostra um exemplo de diviso de nmeros inteiros
binrios sem sinal. instrutivo descrever o processo em detalhes.
Primeiramente, os bits do dividendo so examinados, da esquerda
para a direita, at que se obtenha um conjunto de bits que
represente um nmero maior ou igual ao divisor. Quando esse
nmero encontrado, diz-se que o divisor divide o nmero.
Enquanto isso no ocorre, so introduzidos Os no quociente, da
esquerda para a direita.

Aritmtica com Inteiros


Diviso
Quando esse evento ocorre, colocado um 1 no quociente e o
divisor subtrado do dividendo parcial. O resultado conhecido
como resto parcial. Desse ponto em diante, a diviso segue um
padro cclico. A cada ciclo, bits adicionais do dividendo so
anexados ao resto parcial, at que o resultado seja maior ou igual
ao divisor. Como antes, o divisor subtrado desse nmero, para
produzir um novo resto parcial. O processo continua at que
todos os bits do dividendo tenham sido examinados.

Representaes de Nmeros de Ponto


Flutuante
Princpios
Usando uma notao de ponto fixo (por exemplo,
complemento de dois), possvel representar
certa faixa de nmeros inteiros positivos e
negativos, centrada em 0. Esse formato permite
tambm a representao de nmeros com parte
fracionria, bastando fixar uma posio
adequada para a vrgula que separa a parte
inteira e a parte fracionria.

Representaes de Nmeros de Ponto


Flutuante
Princpios
Essa abordagem tem, entretanto, algumas
limitaes. Ela no possibilita representar
nmeros muito grandes nem fraes muito
pequenas. Alm disso, em uma diviso de dois
nmeros muito grandes, a parte fracionria do
quociente pode ser perdida.

Representaes de Nmeros de Ponto


Flutuante
Princpios
Para nmeros decimais, essa limitao superada com o uso da
notao cientfica. Por exemplo, 976.000.000.000.000 pode ser
representado como 9,76 x 1014 e 0,0000000000000976, como
9,76 x 10-14. A vrgula deslizada dinamicamente para uma
posio conveniente e usado um expoente de 10 adequado, para
representar o mesmo valor original. Isso possibilita expressar
nmeros muito grandes e muito pequenos com poucos dgitos.

Representaes de Nmeros de Ponto


Flutuante
Princpios
Os princpios usados na representao de nmeros
binrios de ponto flutuante podem ser bem explicados
por meio de um exemplo. A Figura 9.18a mostra um
formato tpico de nmeros de ponto flutuante de 32 bits.
O bit mais esquerda armazena o sinal do nmero (0 =
positivo; 1 = negativo).
O valor do expoente armazenado nos 8 bits seguintes.
A representao usada conhecida como representao
polarizada.

Representaes de Nmeros de Ponto


Flutuante

Representaes de Nmeros de Ponto


Flutuante
Princpios
Um valor fixo, chamado de polarizao, subtrado ao valor
desse campo para se obter o verdadeiro valor do expoente.
Tipicamente, a polarizao igual a (2k-1 -1), onde k o
nmero de bits do expoente binrio. Nesse caso, o campo de
8 bits pode conter nmeros de 0 a 255. Com uma
polarizao igual a 127, os verdadeiros valores dos
expoentes esto compreendidos na faixa de -127 a +128.
Nesse exemplo, considera-se que a base 2.

Representaes de Nmeros de Ponto


Flutuante
Princpios
A Figura 9.18b mostra alguns exemplos de nmeros
armazenados nesse formato. Note as seguintes
caractersticas:
O sinal armazenado no primeiro bit da palavra.
O primeiro bit da mantissa verdadeira sempre 1 e no
precisa ser armazenado no campo de mantissa.
O valor 127 adicionado ao expoente verdadeiro para ser
armazenado no campo de expoente.
Abase 2.

Representaes de Nmeros de Ponto


Flutuante
Princpios
A Figura 9.19 indica a faixa de nmeros que podem ser representados em uma
palavra de 32 bits, usando essa representao. Na notao em complemento de
dois, podem ser representados todos os nmeros inteiros de -231 a 231 -1, ou
seja, um total de 232 nmeros distintos. No formato de ponto flutuante da Figura
9.18, nmeros nas seguintes faixas podem ser representados:
Nmeros negativos entre -{I - 2-24) x 2128 e ~,5 x 2-127
Nmeros positivos entre 0,5 x 2-127 e (I - 2-24) x 2128

Representaes de Nmeros de Ponto


Flutuante

Representaes de Nmeros de Ponto


Flutuante
Padro IEEE para representao de nmeros binrios
de ponto fl utuante
A mais importante representao de ponto flutuante definida no
padro IEEE 754 (IEEE, 1985). Esse padro foi desenvolvido
para facilitar a portabilidade de programas entre processadores,
alm de encorajar o desenvolvimento de programas de
processamento numrico sofisticados. Ele tem sido largamente
adotado, sendo usado em quase todos os processadores e
coprocessadores aritmticos modernos.

Representaes de Nmeros de Ponto


Flutuante
Padro IEEE para representao de nmeros
binrios de ponto fl utuante
O padro 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 implcita 2. Na adio,
o padro define dois formatos estendidos, simples e duplo,
cujo formato exato dependente de implementao. Os
formatos estendidos incluem bits adicionais no expoente
(alcance estendido) e na mantissa (preciso estendida).

Representaes de Nmeros de Ponto


Flutuante

Representaes de Nmeros de Ponto


Flutuante
Padro IEEE para representao de nmeros
binrios de ponto fl utuante
Eles so usados para clculos intermedirios. O uso desses
formatos diminui a chance de o resultado final ser
contaminado por excessivo erro de arredondamento, uma
vez que fornecem maior preciso. Alm disso, como
permitem maior alcance, tambm diminui a chance de
overflow em operaes intermedirias, o que poderia
abortar uma computao cujo resultado final seria
representvel no formato bsico.

Representaes de Nmeros de Ponto


Flutuante
Padro IEEE para representao de
nmeros binrios de ponto fl utuante
Uma motivao adicional para o formato
estendido simples que ele possui alguns dos
benefcios do formato duplo, sem incorrer na
penalidade de tempo normalmente associada a
uma preciso mais alta.

Representaes de Nmeros de Ponto


Flutuante
Consideraes de preciso
Bits de guarda
Mencionamos anteriormente que antes de uma operao de
ponto fl utuante o expoente e a mantissa so carregados em
registradores da ULA. No caso da mantissa, o tamanho do
registrador quase sempre maior que o nmero de bits da
mantissa mais o bit implcito. O registrador contm bits
adicionais, chamados bits de guarda, que so usados para
preencher os bits extras at a extremidade direita da
mantissa com zeros.

Representaes de Nmeros de Ponto


Flutuante
Consideraes de preciso
Bits de guarda
A razo do uso desses bits mostrada na Figura 9.25.
Considere os nmeros no formato IEEE, cuja mantissa
tem 24 bits, incluindo um bit 1 implcito, esquerda da
vrgula fracionria. Dois nmeros de valor prximo so,
por exemplo, X = 1,00 ... 00 X 21 e Y = 1,11 ... 11 x 2.
Se o nmero menor for subtrado do maior, ele dever
ser deslocado um bit para a direita, para alinhar os
expoentes.

Representaes de Nmeros de Ponto


Flutuante

Representaes de Nmeros de Ponto


Flutuante
Consideraes de preciso
Arredondamento
Outro detalhe que afeta a preciso do resultado
a poltica de arredondamento. O resultado de
qualquer operao 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.

Representaes de Nmeros de Ponto


Flutuante
Consideraes de preciso
Arredondamento
Diversas tcnicas para arredondamento foram exploradas. De fato, o
padro IEEE relaciona quatro abordagens alternativas:
Arredondar para o mais prximo: o resultado arredondado para o
nmero representvel mais prximo.
Arredondar para cima: o resultado arredondado para cima, na direo
de infinito positivo.
Arredondar para baixo: o resultado arredondado para baixo, na direo
de infinito negativo.
Arredondar para 0: o resultado arredondado na direo de zero.

Representaes de Nmeros de Ponto


Flutuante
Nmeros no-normalizados
Nmeros no-normalizados so includos no padro 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 no-normalizado, deslocando-se os
dgitos da frao para a direita e incrementando o expoente
a cada deslocamento, at que o expoente esteja dentro da
faixa de valores representveis.

Вам также может понравиться