Buscar

Unidade V - Interrupção e Projeto de CPU

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 24 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Organização de 
Computadores
Material Teórico
Responsável pelo Conteúdo:
Prof. Ms. Fábio Peppe Beraldo
Revisão Textual:
Profa. Esp. Márcia Ota
Interrupção e Projeto de CPU
• Conceitos Matemáticos da Computação
• Realizando Cálculos com Números Negativos
• Números de Ponto Flutuante
• Aritmética de Números de Ponto Flutuante
• Simulador
 · O objetivo dessa unidade é capacitar o aluno a realizar a aritmética 
computacional buscando o melhor desempenho do processador.
OBJETIVO DE APRENDIZADO
Nesta Unidade, vamos aprender um pouco mais sobre os conceitos de 
aritmética computacional importantes para a efetividade da programação e 
do funcionamento do hardware também.
Leia o material com atenção e, se sentir necessidade, releia para que sua 
absorção seja adequada. Fique atento(a) nessa etapa, pois é o momento 
oportuno para registrar suas dúvidas; por isso, não deixe de registrá-las e 
transmiti-las ao professor-tutor.
Além disso, para que a sua aprendizagem ocorra num ambiente mais intera-
tivo possível, na pasta de atividades, você também encontrará as atividades 
de avaliação, uma atividade reflexiva e a videoaula. Cada material disponi-
bilizado é mais um elemento para seu aprendizado, por favor, estude todos 
com atenção!
ORIENTAÇÕES
Interrupção e Projeto de CPU
UNIDADE Interrupção e Projeto de CPU
Contextualização
Para entendermos, perfeitamente, o raciocínio lógico da CPU, devemos nos 
aprofundar em como a ULA trabalha, ou seja, devemos entender como ela realiza 
seus cálculos aritméticos. Para tanto, teremos de estudar as funções lógicas da ULA 
e a implementação aritmética dessas funções.
Um dos pontos mais importantes a se lembrar do material já estudado: a 
aritmética computacional trabalha com dois tipos de números: números inteiros 
e números de ponto flutuante. Portanto, qual escolher para trabalhar é de supra 
importância para o funcionamento otimizado do programa.
Nesta unidade da disciplina, veremos como esses cálculos são feitos, variando o 
tipo de função entre as duas formas de numeração e, dessa forma, você será capaz 
de definir qual a melhor opção para seus programas.
6
7
Conceitos Matemáticos da Computação
Se vamos falar de matemática ou aritmética no computador, com certeza, vamos 
falar da ULA, uma vez que ela é responsável por toda a execução de cálculos 
da máquina, como o próprio nome diz, Unidade Lógica e Aritmética, ou seja, 
a unidade responsável pelos cálculos aritméticos. Todos os outros elementos de 
hardware, e até alguns de software, possuem uma única função: trazer dados para 
a ULA interpretar e aguardar os resultados dela.
Mesmo a ULA é constituída de dispositivos que são capazes de fazer cálculos 
com dígitos binários baseados na lógica booleana.
A ULA conecta-se com os demais componentes do computador via barramentos 
que a ligam aos registradores que armazenam resultados preliminares de operações 
de algumas instruções. Outra ação da ULA é gerar flags (bits especiais) para indicar 
o resultado de uma operação. Assim, a Unidade de Controle UC avalia o trabalho 
da ULA e o processamento prossegue.
Vimos, que o sistema de números binários possibilita a representação de nú-
meros, usando os dígitos 0 e 1, a simbologia da subtração ou representação 
negativa pelo traço ( - ) e a representação decimal pela virgula ( , ). Porém, a re-
presentação decimal, subtração e negativa são simbologias humanas; no compu-
tador não teria como processar tais representações de caracteres, apenas dígitos 
0 e 1 podem ser usados.
Para números inteiros e não negativos, isso não é um problema, podendo ser 
representados pelo byte, que é um conjunto de 8bits, como por exemplo:
• 00101001 = 41
• 10000000 = 128
Para nosso estudo, podemos representar uma sequência (n) de dígitos binários 
(an–1 an–2 ... a1 a0) de números inteiros não negativos (A) pela equação:
A a
i
n
i
i= ×
=
−
∑
0
1
2
Para auxiliar a leitura do código binário de números não negativos, algumas 
regras foram criadas, utilizando a representação do sinal-magnitude que trabalha 
com o bit mais significativo da palavra (identificado pelo bit mais à esquerda 
do valor binário ou o primeiro bit da esquerda do byte) da seguinte forma; se 
esse bit for 0, significa um valor numérico positivo, se esse bit for 1, significa um 
valor numérico negativo. Da seguinte forma:
• + 41 = 00101001
• – 41 = 10101001 (sinal-magnitude)
7
UNIDADE Interrupção e Projeto de CPU
A representação do sinal-magnitude possui, porém, algumas desvantagens, 
tais como o trabalho de se considerar tanto a magnitude quanto o sinal de cada 
operando envolvido em uma operação aritmética, o que aumenta o trabalho da 
ULA, e a dupla representação do valor zero que pode ser positivo ou negativo; 
nesse ponto, por exemplo, atrapalharia a identificação de alguns bits especiais de 
reconhecimento de atividade como flag da ULA, recém-discutido. Veja o exemplo:
• + 0 = 00000000
• – 0 = 10000000 (sinal-magnitude)
Para corrigir as dificuldades que a técnica de sinal-magnitude implementava, 
foi criada uma nova regra: a representação em complemento de dois. Nessa 
representação, ainda é usado o bit mais significativo como identificador de 
sinal do valor numérico, mas diferente da representação de sinal-magnitude, 
os demais bits à direita são representados de formas diferenciadas à 
necessidade, conforme a tabela 1.
Tabela 1 – Características da representação e aritmética em complemento de dois
Faixa de valores representáveis -2 a2 - 1(n-1) (n-1)
Número de representações para zero 1
Negação
Pegue o complemento booleano de cada bit do número positivo 
correspondente e, então, some 1 ao padrão de bits resultante, tratado como 
um número inteiro sem sinal.
Expansão do número de bits Acrescente posições de bit à esquerda e preencha esses bits com o valor do bit de sinal original.
Regra de overflow Se dois números com mesmo sinal (ambos positivos ou ambos negativos) forem somados, ocorrerá overflow, apenas se o resultado tiver sinal oposto.
Regra de subtração Para subtrair B de A, pegue o complemento de dois de B e some-o com A.
Fonte: Stallings, W., Arquitetura e Organização de Computadores
No entanto, mesmo com essa modificação, a representação por complemento 
de dois ainda não comprovou sua eficácia verdadeiramente; logo, houve alguns 
melhoramentos em seu funcionamento, como a definição pela soma ponderada 
de bits.
Mas como funciona?
Se pegarmos como exemplo um valor positivo inteiro P de (n) bits na 
representação em complemento de dois, o bit significativo será zero (an–1 = 0) e os 
bits de magnitude irão obedecer a equação:
P a ���� �P
i
n
i
i= × ≥
=
−
∑
0
2
2 0para
8
9
Mas se P for um número negativo o bit significativo será um (an–1 = 1) e os 
bits de magnitude poderão representar até 2n–1 valores. Dessa forma, tem-se uma 
faixa de números negativos possíveis de –1 a –2n–1. Utilizando um bit de sinal as 
propriedades aritméticas desejadas são obtidas, por convenção, uma vez que o 
valor do número é calculado a partir da sua representação, multiplicando o bit mais 
significativo por –2n–1, gerando, então, a equação para complemento de dois que 
representa valores positivos e negativos.
P a an n
i
n
i
i= − × + ×
−
−
=
−
∑2 21 1
0
2
Para tentar facilitar a compreensão da equação, é apresentada uma representação 
geométrica. Começando de qualquer número, pode-se somar (sentido horário) 
ou subtrair (sentido anti-horário) um valor K, movendo K posições, e se essa 
movimentação cruzar o ponto, em que as extremidades se juntam, a resposta 
obtida é incorreta.
0
0000
1111
1110
1101
1100
1011
1010
1001
1000
0
(a) Números de 4 bits (b) Números de n bits
-1-2-3-4-5-6-7-8-9 1 2 3 4 5 6 7 8 9
0111
0110
0101
0100
0011
0010
0001
-1
-2
-3
-4
-5
-6
-7 -8 +7
+6
+5
+4
+3
+2
+1
Subtração de
números
positivos
Adição de
números
positivos
0
000...0
111...1
110...0
100...0
-8 7
011...1
0100
-1
-4
-8 +7
+4
Subtração de
números
positivos
Adição de
númerospositivos
Figura 1 – Representação geométrica dos números inteiros em complemento de dois
Fonte: Stallings, W., Arquitetura e Organização de Computadores
Conversão entre representações com números de bits diferentes
Uma coisa comum e importante de se saber fazer é converter a representação 
de n bits para m bits, onde m > n. Na representação por sinal-magnitude, isso é 
relativamente fácil de se fazer, pois basta mover o bit de sinal para a posição mais 
à esquerda e preencher as demais posições liberadas com valores zero.
• + 18 = 00010010 (sinal-magnitude, 8 bits)
• + 18 = 0000000000010010 (sinal-magnitude, 16 bits)
• – 18 = 10010010 (sinal-magnitude, 8 bits)
• – 18 = 1000000000010010 (sinal-magnitude, 16 bits)
9
UNIDADE Interrupção e Projeto de CPU
Infelizmente, na representação por complemento, essa simples tática não vai 
funcionar para números inteiros negativos representados em complementos de 
dois, como mostrado a seguir:
• + 18 = 00010010 (sinal-magnitude, 8 bits)
• + 18 = 0000000000010010 (sinal-magnitude, 16 bits)
• – 18 = 10010010 (sinal-magnitude, 8 bits)
• – 32.658 = 1000000001101110 (sinal-magnitude, 16 bits)
Para corrigir essa falha é simples, basta mover o bit de sinal para a posição mais 
à esquerda, método convencional e preencher os novos valores com o bit 1, ao 
invés do bit 0, como no método convencional, ficando da seguinte forma:
• – 18 = 10010010 (sinal-magnitude, 8 bits)
• – 18 = 1111111110010010 (sinal-magnitude, 16 bits)
Realizando Cálculos com Números Negativos
A negativa ou negação
Para representar a negativa ou a negar um número, ou ainda inverter um 
número, basta inverter o valor de cada bit desse número (1 → 0 e 0 → 1), somando 
1 ao resultado final.
(complemento de dois) 00010010 = +18
(complememento bit a bit) 11101101
(adição do bit 1) + 1
11101110 = –18
Apesar de sua facilidade de trabalho, a negação possui alguns problemas, um 
deles é quando o valor a ser invertido for o 0. Nesse caso, a soma irá estourar os 
8 bits e esse bit a mais deverá ser descartado, mantendo, assim, o mesmo valor 
binário para o + 0 e o – 0. Veja o exemplo:
(complemento de dois) 00000000 = 0
(complememento bit a bit) 11111111
(adição do bit 1) + 1
((descarte do valor além dos 8bits)) 100000000 = 0
00000000 = 0
10
11
O segundo problema possui um nível impossível de se resolver na representação 
por complemento de dois.
Se pegarmos um valor que inicia com bit 1 e tem n–1 bits = 0, teremos 
como resposta o mesmo número inicial. Isso acabou por criar uma regra, em 
que se identifica a quantidade de valores passível de se inverter pelo número de 
representações para o valor 0.
Se tiver duas representações para o 0, está se usando a representação por sinal-
magnitude e o número de inversões possíveis será sempre igual.
Se o número 0 tiver apenas uma representação, está sendo usada a represen-
tação por complemento de dois e os números passíveis de inversão não serão 
iguais, havendo limitações. A seguir, veja o exemplo dessa limitação do comple-
mento de dois:
(complemento de dois) 10000000 = –128
(complememento bit a bit) 01111111
(adição do bit 1) + 1
((descarte do valor além dos 8bits)) 10000000 = –128
Adição e subtração
Quando estamos efetuando uma adição, muitas vezes, estoura o tamanho da 
palavra, o que chamamos de overflow (isso ocorre porque 0+0=0; 0+1=1; 1+0=1; 
1+1=0 vai 1 para a esquerda ou próximo valor). Uma vez que isso ocorra, a ULA 
sinaliza o overflow para que o valor que estourou a palavra seja descartado. Como 
regra de identificação temos que, para a soma de valores positivos ou negativos 
com resultado oposto, haverá overflow.
Para a subtração, é utilizada a negação para inverter o valor que será subtraído 
(subtraendo) do valor principal (minuendo), como no exemplo a seguir:
Exemplo 1:
0010
1001
1011
+
onde:
• 0010 = + 2 = minuendo
• 0111 = + 7 = subtraendo
• 1001 = – 7 = negação do subtraendo
• 1011 = – 5 = resultado
11
UNIDADE Interrupção e Projeto de CPU
Exemplo 2:
1010
1100
0110
0110
+
1
onde:
• 1010 = – 6 = minuendo
• 0100 = + 4 = subtraendo
• 1100 = – 4 = negação do subtraendo
• 10110 = – 10 = overflow
• 0110 = – 10 = resultado
Multiplicação
A multiplicação é, consideravelmente, mais complicada que as demais operações; 
por isso, vamos falar de cada tipo separadamente.
Primeiramente, vamos multiplicar números intei-
ros sem sinal, ou seja, valores positivos. Como na 
multiplicação feita à mão, você deve multiplicar cada 
fator no número “multiplicando” por cada fator do 
“multiplicador” (quando o bit do multiplicador é 0, o 
produto parcial é 0 e quando é 1, o produto parcial é 
o próprio multiplicando) e depois somar cada subpro-
duto para obter o produto resultante, como descrito 
na equação a seguir:
1001
1101
1011
0000
1011
1011
10001111
×
Uma forma diferente de calcular a multiplicação de dois valores começa com 
o acúmulo do subproduto, o que retira a soma posterior, eliminando passos e 
economizando memória da ULA. A seguir, tem-se uma figura exemplificando os 
registradores envolvidos no processo (Q, M, A e C):
Mn-1
C
M0
An-1 A0 Qn-1 Q0
Somador de n bits
Multiplicador
Deslocamento à direita
Adição
Multiplicando
Lógica de controle de
adição e deslocamento
(A)
12
13
C A Q M Valores iniciais
0 0000 1101 1011 Adição Primeiro
0 1011 1101 1011 Deslocamento Ciclo
0 0101 1110 1011 Deslocamento Segundo
0 0010 1111 1011 Ciclo
0 1101 1111 1011 Adição Terceiro
0 0110 1111 1011 Deslocamento Ciclo
1 0001 1111 1011 Adição Quarto
0 1000 1111 1011 Deslocamento Ciclo
Figura 2 – Implementação do hardware de multiplicação de números binários positivos
(A)=Diagrama de blocos; (B)=Ciclo de cálculo do produto
Fonte: Stallings, W., Arquitetura e Organização de Computadores
Esse hardware de multiplicação funciona da seguinte forma: a ULA lê os bits 
do multiplicador, um de cada vez. Se Q0 for 1, o multiplicador será adicionado ao 
registrador A e o resultado, armazenado nesse registrador, sendo o bit C usado 
para indicar a ocorrência de overflow.
Após o overflow, todos os bits dos registradores C, A e Q são deslocados um 
bit para a direita, de modo que o bit C vá para An–1, A0 vá para Qn–1 e Q0 seja 
perdido. Se Q0 for 0, então, nenhuma adição é efetuada, sendo feito apenas o 
deslocamento dos bits. Esse processo é repetido para cada bit do multiplicador 
original. O produto de 2n bits resultantes estará contido nos registradores A e Q. 
Talvez, seja mais fácil entender como funciona usando o fluxograma.
Início
Q0 = 1?
C, A « 0
M « Multiplicando
Q « Multiplicador
Contador « n
Deslocamento de C, A, Q
Contador « Contador -1
C, A « A + M
Contador = 0? FIM
Não Sim Produto
em A, Q
Não Sim
Figura 3 – Fluxograma da multiplicação de números binários sem sinal
Fonte: Stallings, W., Arquitetura e Organização de Computadores
13
UNIDADE Interrupção e Projeto de CPU
A próxima multiplicação existente é a de números em complemento de dois. 
Nessa multiplicação, o método anterior não funciona quando os valores forem 
negativos. Para que funcione corretamente a multiplicação de um número binário 
por 2n, deve ser feito o deslocamento no valor n bit para a esquerda, além do uso 
de um novo algoritmo chamado Booth que funcionará como multiplicador.
Como antes, multiplicador e multiplicando são armazenados nos registradores 
Q e M, respectivamente. Existe também um registrador de 1 bit, posicionado 
logicamente à direita do bit menos significativo (Q0) do registrador Q e designado 
como Q–1.
O resultado da multiplicação é dado nos registradores A e Q e, então, A e Q–1 
são inicializadoscom valor 0. A lógica de controle examina os bits do multiplicador, 
um de cada vez, bem como também é examinado o bit à sua direita. Se esses dois 
bits forem iguais (1-1 ou 0-0), então, todos os bits dos registradores A, Q e Q–1 
serão deslocados 1 bit para a direita. Se eles forem diferentes, o multiplicando 
será somado ou subtraído do registrador A, dependendo se os dois bits são 0-1 
ou 1-0, respectivamente. Após essa operação de adição ou subtração, ocorre o 
deslocamento de um bit para a direita, que é feito de tal maneira que o bit mais à 
esquerda de A, denominado An–1, é deslocado para Na–2, mas também permanece 
em An–1. Isso é necessário para preservar o sinal do número armazenado em A e Q. 
Esse deslocamento é conhecido como deslocamento aritmético, porque preserva 
o bit de sinal.
Início
Q0, Q-1
A « 0, Q-1 « 0
M « Multiplicando
Q « Multiplicador
Contador « n
Deslocamento aritmético
para a direito: A, Q0, Q-1
Contador « Contador -1
A « A + MA « A - M
Contador = 0? FIM
Não Sim Produto
em A, Q
= 10 = 01
= 11
= 00
14
15
(B)
A Q Q–1 M
0000 0011 0 0111 Valores Iniciais
1001 0011 0 0111 A ← A – M Primeiro
1100 1001 1 0111 Deslocamento Ciclo
1110 0100 1 0111 Deslocamento
Segundo
Ciclo
0101 0100 1 0111 A ← A + M Terceiro
0010 1010 0 0111 Deslocamento Ciclo
0001 0101 0 0111 Deslocamento
Quarto
Ciclo
Figura 4 – Implementação do hardware de multiplicação de números binários positivos
(A)= Algoritmo de Booth; (B)=Ciclo de cálculo do produto com Booth
Fonte:Stallings, W., Arquitetura e Organização de Computadores
Divisão
A divisão é ainda mais complexa que a multiplicação. Mais à frente, há uma 
descrição em fluxograma, onde o divisor é colocado no registrador M e o dividendo, 
no registrador Q, cada fase desloca os registradores um bit para a esquerda e M 
é subtraído de A, para determinar se A divide o resto. Caso essa divisão seja 
possível, o valor do bit Q0 será 1, caso não seja possível o valor de Q0 será 0 e o 
valor de M será somado a A, para restaurar seu valor anterior. O contador, então, 
é decrementado e o processo é repetido por n passos. Ao final, o quociente estará 
no registrador Q e o resto, no registrador A.
Início
A < 0? 
A « 0
M « Divisor
Q « Dividendo
Contador « n
Deslocar
A, Q para a
esquerda
Contador « Contador -1
Q0 « 1
A « A + MQ0 « 1
A « A - M
Contador = 0? FIM
Não Sim Quociente em Q
Resto em A
Não Sim
Figura 5 – Fluxograma da divisão de números binários sem sinal
Fonte: Stallings, W., Arquitetura e Organização de Computadores
15
UNIDADE Interrupção e Projeto de CPU
Números de Ponto Flutuante
O ponto flutuante é utilizado para corrigir algumas deficiências das represen-
tações de valores por complemento de dois, por exemplo, onde não era possível 
representar valores muito grandes ou frações muito pequenas. Para solucionar esse 
problema matematicamente, usa-se a notação científica, em que um valor como 
851.000.000.000.000 pode ser representado por 8,51x1014.
Isso também é possível de se fazer com valores binários utilizando três campos 
específicos: Sinal ( + ou - ), a (M)antissa e o (E)xpoente, já a (B)ase é a mesma para 
todos os números, o que elimina a necessidade de seu armazenamento.
Usando uma palavra de 32 bits, temos o bit mais à esquerda como o representativo 
do sinal, sendo 0 para positivo e 1 para negativo. Em seguida, temos a representação 
do expoente, ocupando 8 bits de armazenamento, para trabalho com o expoente, 
usa-se um valor fixo chamado polarizador que é subtraído do valor do expoente 
para se obter o verdadeiro valor do expoente binário, tipicamente a polarização 
é representada por (2k–1–1), onde k representa o número de bits do expoente 
binário e, assim, o 8 bits armazenados podem conter números de 0 a 255. Como 
exemplo, se usarmos uma polarização de 127, os verdadeiros expoentes podem 
ser de –127 a +128 na base 2. O restante da palavra de 32 bits é a mantissa.
Porém, para facilitar as operações com pontos flutuante, é necessário que 
esses números sejam normalizados, sendo esse valor polarizado expresso por:
± × ±0 1 2, �bbb� b E
onde b é um dígito binário 0 ou 1.
Isso implica que o bit mais à esquerda da mantissa é sempre 1. Por isso, não é 
necessário armazenar esse bit, pois ele é implícito. Portanto, o campo de 23 bits é 
usado para armazenar uma mantissa de 24 bits com valor entre 0,5 e 1,0.
8 bits
Expoente PolarizadoSinal da mantissa
(a) Formato
Mantissa
23 bits
Figura 6 – Formato típico da representação de números de ponto flutuante de 32 bits
Fonte: Stallings, W., Arquitetura e Organização de Computadores
Devemos nos atentar em alguns pontos da representação de ponto flutuantes 
da figura 6. O sinal está armazenado no primeiro bit da palavra, o primeiro bit 
da mantissa é 1, como deveria ser mesmo, o que o faz não ser armazenado no 
campo da mantissa, o valor 127 é adicionado ao expoente verdadeiro para ser 
armazenado no campo de expoente e, por fim, a base utilizada foi 2.
16
17
0
(A)
(B)
-231 231-1
Números inteiros representáveis
Reta dos números
0-05 x 2127 05 x 2127
Zero
Números negativos
representáveis
Over�ow em
números negativos
Números positivos
representáveis
Over�ow em
números positivos
Under�ow em
números negativos
Under�ow em
números positivos
Reta dos números
(1 - 224) x 2128-(1 - 224) x 2128
Figura 7 – Fluxograma da divisão de números binários sem sinal
(A)=Números inteiros em complemento de dois;
(B)=Números representáveis em formato de 32 bits
Fonte: Stallings, W., Arquitetura e Organização de Computadores
Na figura 7, já podemos observar a faixa de números possíveis de serem 
representados em uma palavra de 32 bits. Na notação de complemento de dois, 
representam-se números inteiros de –231 a 231–1, ou simplificando, 232 números 
distintos. Já, no formato de ponto flutuante, a faixa pode ser:
• Números negativos entre: − −( ) × − ×− −1 2 2 0 5 224 128 127  e ,
• Números positivos entre: 0 5 2 1 2 2127 24 128, × −( ) ×− −   e
Salientando alguns pontos não demonstrados na figura, temos:
• Números negativos menores que − −( ) ×−1 2 224 128 , correspondendo a overflow 
em números negativos.
• Números negativos maiores que − × −0 5 2 127, , correspondendo a underflow em 
números negativos.
• Números positivos menores que 0 5 2 127, × − , correspondendo a underflow em 
números positivos.
• Números positivos maiores que ( ) ,( )1 2 224 128− ×− a overflow em 
números positivos.
Aritmética de Números de Ponto Flutuante
Os cálculos com ponto flutuante são extremamente complexos e pedem um 
estudo mais detalhado do material complementar, mas vamos verificar os fatores 
de maior relevância quando trabalharmos com cálculos de ponto flutuante.
17
UNIDADE Interrupção e Projeto de CPU
Podemos fazer uma representação via equação de ponto flutuante através dos 
seguintes valores:
Operadores X X BS
XE= × Y Y BS
YE= ×
Soma X Y X B Y B ���para����X YS
X Y
S
Y
E E
E E E+ = × +( ) × ≤−
Subtração X Y X B Y B ���para����X YS
X Y
S
Y
E E
E E E− = × −( ) × ≤−
Multiplicação X Y X Y BS S
X YE E× = ×( ) × +
Divisão
X
Y
X
Y
Bs
s
X YE E=





 ×
−
Exemplos:
Operadores X = × =0 3 10 302, Y = × =0 2 10 2003,
Soma X Y+ = × +( ) × = × =−0 3 10 0 2 10 0 23 10 2302 3 3 3, , ,
Subtração X Y− = × −( ) × = − × = −−0 3 10 0 2 10 0 17 10 1702 3 3 3, , ,
Multiplicação X Y× = ×( ) × = × =+0 3 0 2 10 0 06 10 60002 3 5, , ,
Divisão
X
Y
= 




 × = × =
− −0 3
0 2
10 1 5 10 0 152 3 1
,
,
, ,
18
19
Claro que alguns problemas sempre existirão, como por exemplo:
• Overflow no expoente: um expoente positivo excede o maior valor possível 
para um expoente. Em alguns sistemas, isso pode ser designado como +∞ 
ou – ∞.
• Underflow no expoente: um expoente negativo é menor que o menor valor 
possível para um expoente. Isso significa que o número é muito pequeno para 
ser representado e pode ser tratado como sendo 0.
• Underflow na mantissa: no processo de alinhamento das mantissas, pode 
ocorrer o transbordar de dígitos para da extremidadeda direita da mantissa, o 
que exigirá arredondamento.
• Overflow na mantissa: a adição de duas mantissas de mesmo sinal pode 
resultar em uma sobra de bit significativo; o que pode ser corrigido com um 
novo alinhamento do número.
A seguir, você pode verificar os fluxogramas da multiplicação e da divisão para 
entender melhor essas operações que são mais simples que a adição e a subtração: 
Multiplicação
Z « 0 Subtrair polarização
X = 0? 
Sim Sim
Não Não
Sim
Não
Não
Sim
Normalizar
Arredondar
Over�ow no
expoente?
Under�ow no
expoente?
Y = 0? 
Retornar
Retornar
Adicionar
expoentes
Multiplicar
mantissas
Reportar
underflow
Reportar
overflow
Figura 8 – Multiplicação de números de ponto fl utuante (Z ← X × Y).
Fonte: Stallings, W., Arquitetura e Organização de Computadores
19
UNIDADE Interrupção e Projeto de CPU
Divisão
Z « 0 Adicionar polarização
X = 0? 
Sim
Z « ∞
Sim
Não Não
Sim
Não
Não
Sim
Normalizar
Arredondar
Over�ow no
expoente?
Under�ow no
expoente?
Y = 0? 
Retornar
Retornar
Subtrair
expoentes
Dividir
mantissas
Reportar
underflow
Reportar
overflow
Figura 9 – Divisão de números de ponto flutuante (Z ← X ÷ Y).
Fonte: Stallings, W., Arquitetura e Organização de Computadores
Simulador
No material complementar, você terá links para simuladores e conversores de 
ponto flutuante para que veja acontecendo todos os cálculos que você estudou 
nessa unidade. Então, mude e teste várias opções para identificar cada fase dos 
cálculos, dessa forma complementando o que estudamos aqui.
20
21
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
 Sites
IEEE 754 Converter
http://goo.gl/oHhIrj
Floating Point Add/Subtract
http://goo.gl/hGLQpX
Decimal to Floating-Point Converter
http://goo.gl/evx8Vf
 Vídeos
Implementação do Somador de 4 bits
https://goo.gl/xks6wl
21
UNIDADE Interrupção e Projeto de CPU
Referências
MONTEIRO, Mario A.; A Organização de Computadores; 5ª Ed.; Editora: 
LTC; 2012.
TANENBAUM, Andrew S.; Organização Estruturada de Computadores; 
5ª Ed.; Editora: Pearson Education; 2006.
22

Outros materiais