1

Arquitetura e Organização de Computadores
Aritmética Computacional
Prof. Otávio Gomes
otavio.gomes@ifmg.edu.br
Prof. Mário Luiz Rodrigues
mario.luiz@ifmg.edu.br
2
Arquitetura e Organização de Computadores
Aritmética Computacional
Representação e Tipos de Dados
Representação de inteiros, Sinal-Magnitude, Complementos
Números sinalizados, overflow e underflow
Tipo Numérico
Representação em Ponto Fixo
Representação em Ponto Flutuante
3
Arquitetura e Organização de Computadores
4
Arquitetura e Organização de Computadores
Representação e
Tipos de Dados
orma Tipos
Caractere Caractere
Lógico Lógico
Decimal
Numérico Ponto Flutuante
Sinal e Magnitude
Ponto Fixo Complemento a 1
Complemento a 2
{
{
!
Arquitetura e Organização de Computadores
Representação e
Tipos de Dados
"
Arquitetura e Organização de Computadores
Representação e
Tipos de Dados
Genericamente, veja alguns tipos fundamentais de declaração de variáveis.
São eles:
int, para números inteiros entre -2147483647 e 2147483647, utiliza 4 bytes;
c#ar, para caracteres individuais do padrão ASCÌÌ, utiliza 1 byte;
$loat, para reais entre (aproximadamente) 10
-38
e 10
38
, utiliza 4 bytes,
precisão de 7 dígitos;
dou%le, para reais entre (aproximadamente) 10
-4932
e 10
4932
, utiliza 8 bytes,
precisão de 15 dígitos;
%ool, para indicar true (verdadeiro) ou false (falso), utiliza 1 byte; Presente
apenas no padrão C99 em diante.
&
Arquitetura e Organização de Computadores
http://computer.howstuffworks.com/computer-memory4.htm
Representação e
Tipos de Dados
'
Arquitetura e Organização de Computadores
http://www.metropoledigital.ufrn.br/aulas/disciplinas/sist_operacional/aula_11.html
Representação e
Tipos de Dados
(
Arquitetura e Organização de Computadores
http://www.metropoledigital.ufrn.br/aulas/disciplinas/sist_operacional/aula_11.html
Representação e
Tipos de Dados
1)
Arquitetura e Organização de Computadores
http://www.metropoledigital.ufrn.br/aulas/disciplinas/sist_operacional/aula_11.html
Representação e
Tipos de Dados
11
Arquitetura e Organização de Computadores
Representação e
Tipos de Dados
Tipo NumBits Formato Inicio Fim
char 8 %c -128 127
unsigned char 8 %c 0 255
signed char 8 %c -128 127
int 16 %i -32768 32767
unsigned int 16 %u 0 65535
signed int 16 %i -32768 32767
short int 16 %hi -32768 32767
unsigned short int 16 %hu 0 65535
signed short int 16 %hi -32768 32767
!ong int 32 %!i -21"7"836"8 21"7"836"7
signed !ong int 32 %!i -21"7"836"8 21"7"836"7
unsigned !ong int 32 %!u 0 "2#"#672#5
$!oat 32 %$ 3%"&-38 3"&'38
dou(!e 6" %!$ 1%7&-308 1%7&'308
!ong dou(!e 80 %)$ 3%"&-"#32 3%"&'"#32
12
Arquitetura e Organização de Computadores
Representação e
Tipos de Dados
Tamanho do registro e do endereço físico de algumas
arquiteturas populares de processador
http://www.ibm.com/developerworks/br/library/j-nativememory-linux/
13
Arquitetura e Organização de Computadores
Representação e
Tipos de Dados
http://www.ibm.com/developerworks/br/library/j-nativememory-linux/
*a+out de espaço de endereço para
,indo-s de 32 %its
*a+out de espaço de endereço para
*inu. de 32 %its
14
Arquitetura e Organização de Computadores
Representação e
Tipos de Dados
http://courses.cs.vt.edu/csonline/MachineArchitecture/Lessons/CPU/Lesson.html
1!
Arquitetura e Organização de Computadores
Representação e
Tipos de Dados
http://www.henkessoft.de/C/C-Programming%20Under%20The%20Hood.htm
1"
Arquitetura e Organização de Computadores
Representação e
Tipos de Dados
http://arstechnica.com/features/2008/09/x86-64/
1&
Arquitetura e Organização de Computadores
http://arstechnica.com/features/2008/09/x86-64/
Representação e
Tipos de Dados
1'
Arquitetura e Organização de Computadores
http://arstechnica.com/features/2008/09/x86-64/
Representação e
Tipos de Dados
1(
Arquitetura e Organização de Computadores
Representação e
Tipos de Dados
http://yecd.com/os/8086%20assembler%20tutorial%20for%20beginners%20%28part%201%29.htm
2)
Arquitetura e Organização de Computadores
Representação e
Tipos de Dados
Representação do sinal de um número.
Representação da vírgula (ou ponto) que separe a parte
inteira da parte fracionária de um número não-inteiro.
Quantidade limite de algarismos possível de ser processada
pela ULA de um processador.
21
Arquitetura e Organização de Computadores
Representação de inteiros/
0inal12agnitude/ Complementos/
34meros sinalizados/ O5er$lo- e 6nder$lo-
22
Arquitetura e Organização de Computadores
7#+sics
De5ices
Analog
Circuits
Digital
Circuits
*ogic
2icro1
arc#itecture
Arc#itecture
Operating
0+stems
Application
0o$t-are
electrons
transistors
diodes
ampli$iers
$ilters
A3D gates
3OT gates
adders
memories
datapat#s
controllers
instructions
registers
de5ice dri5ers
programs
$
o
c
u
s

o
$

t
#
i
s

c
o
u
r
s
e
A%stração
23
Arquitetura e Organização de Computadores
Decimal ÷ Ìnteiros sem Sinal
! 3 & 4
1)
8 ! 9 1)
3
: 3 9 1)
2
: & 9 1)
1
: 4 9 1)
)
mil#ares
1
)
;
s
1
)
)
;
s
1
)
)
)
;
s
centenas dezenas unidades
1
;
s
D 8 d
n11
d
n12
< d
1
d
)
=>D? 8 d
n11
.1)
n11
: d
n12
.1)
n12
: < : d
1
.1)
1
: d
)
.1)
)
Representação 7osicional
24
Arquitetura e Organização de Computadores
Binário ÷ Ìnteiros sem sinal
@ 8 %
n11
%
n12
< %
1
%
)
=>@? 8 %
n11
.2
n11
: %
n12
.%
n12
: < : %
1
.2
1
: %
)
.2
)
n11
8 A %
i
.2
i

i8)
1 1 ) 1
2
8 1 9 2
3
: 1 9 2
2
: ) 9 2
1
: 1 9 2
)
8 13
1)
2
;
s
4
;
s
'
;
s
1
;
s
Representação 7osicional
2!
Arquitetura e Organização de Computadores
Considere um número decimal N-dígitos

Representa 10
N
possíveis valores

O Ìntervalo é: [0, 10
N
- 1]

Exemplo,
Um número decimal 3-dígitos representa 10
3
= 1000 valores, com intervalo de [0, 999]
Considere um número binário N-bits

Representa 2
N
possíveis valores

O Ìntervalo é: [0, 2
N
- 1]
Exemplo, um número binário 3-bit 2
3
= 8 valores, com intervalo de [0, 7] (i.e., 000
2
a 111
2
)
=alores e inter5alos
2"
Arquitetura e Organização de Computadores
Con5ersBes de @ase
2&
Arquitetura e Organização de Computadores
C.cesso 2
m11
Representa um número armazenando-o como a soma dele mesmo
com 2
m-1
.
Por exemplo:
Para números de 8 bits, m=8, o sistema é denominado excesso 128 e
um número é armazenado como seu verdadeiro valor mais 128.
Portanto, -3 se torna -3+128=125, e -3 é representado pelo número
binário de 8 bits para 125 (01111101).
Os números de -128 a 127 podem ser mapeados de 0 a 255, podendo
ser expressos como um inteiro positivo de 8 bits.
O interessante é que esse sistema é idêntico ao complemento de dois
com o bit de sinal invertido.
2'
Arquitetura e Organização de Computadores
• @its
• @+tes D 3i%%les
• @+tes
10010110
nibble
byte
CEBF9AD7
least
significant
byte
most
significant
byte
10010110
least
significant
bit
most
significant
bit
@it/ 3i%%les e @+tes
2(
Arquitetura e Organização de Computadores
Decimal
Binária
3734
5168 +
8902
carries
11
1011
0011 +
1110
11
carries
Adição
3)
Arquitetura e Organização de Computadores
Sistemas Digitais operam com um número fixo de bits.
A Adição tem overflow quando o resultado não pode ser
representado com o número de bits disponíveis
Exemplo: somar 13 e 5 usando números de 4-bits:
1101
0101 +
10010
11 1
O5er$lo-
31
Arquitetura e Organização de Computadores
Sinal e Magnitude
b
n 1 –
b
1
b
0
Magnitude
MSB
34mero sem 0inal
b
n 1 –
b
1
b
0
Magnitude
Sign
34mero com 0inal
b
n 2 –
0 denotes
1 denotes
+
– MSB
Representação de
34meros 3egati5os
32
Arquitetura e Organização de Computadores
1 bit de signal, N-1 bits de magnitude

O bit de sinal é o mais significativo (mais a
esquerda)

Número negativo: 1

Número positivo: 0

Exemplo, representação de ± 5 com 4-bit:
- 5 = 1101
2

+5 = 0101
2

Ìntervalo de um número N-bit sinal/magnitude:
[-(2
N-1
-1), 2
N-1
-1]
Representação de
34meros 3egati5os
33
Arquitetura e Organização de Computadores
Complemento de 1
Cm complemento de E6mF o n4mero negati5o G/ com n1%its/ é
o%tido su%traindo seu positi5o 7 de 2
n
1 1
G 8 >2
n
H 1? 1 7
Representação de
34meros 3egati5os
34
Arquitetura e Organização de Computadores
Complemento de 1
Cm complemento de E6mF o n4mero negati5o G/ com n1%its/ é
o%tido su%traindo seu positi5o 7 de 2
n
1 1
G 8 >2
n
H 1? 1 7
C.emploI se n 8 4/
entãoI

G 8 >2
4
H 1? H 7
G 8 >1" H 1? H 7
G 8 >1111?
2
1 7
G 8 1& 1J 7 8 &
& 8 >)111?
2
1& 8 >1111?
2
1 >)111?
2
1& 8 >1)))?
2
Representação de
34meros 3egati5os
3!
Arquitetura e Organização de Computadores
Complemento de 2
Cm complemento de EDoisF o n4mero negati5o G/ com n1%its/ é
o%tido su%traKndo seu positi5o 7 de 2
n
G 8 2
n
1 7
G 8 >2
n
1 1? : 1 1 7
G 8 >2
n
1 1? H 7 : 1
Representação de
34meros 3egati5os
3"
Arquitetura e Organização de Computadores
Complemento de 2
Cm complemento de EDoisF o n4mero negati5o G/ com n1%its/ é
o%tido su%traKndo seu positi5o 7 de 2
n
G 8 2
n
1 7
C.emploI se n 8 4
entãoI

G 8 2
4
H 7
G 8 1" H 7
G 8 >1))))?
2
1 7
G 8 1& 1J 7 8 &
& 8 >)111?
2
1& 8 >1))))?
2
1 >)111?
2
1& 8 >1))1?
2
G 8 >2
n
1 1? : 1 1 7
G 8 >2
n
1 1? H 7 : 1
Representação de
34meros 3egati5os
3&
Arquitetura e Organização de Computadores
• Complemento de 2

2aior n4mero positi5o de 41%itI )111
2
>&
1)
?

2aior n4mero negati5o de 41%itI 1)))
2
>-2
3
8 -'
1)
?
– O most signi$icant %it tam%ém indica o sinal >1 8 negati5o/ ) 8
positi5o?
– Lnter5alo de um n4mero de N1%itI

M-2
N11
/ 2
N11
-1N
Representação de
34meros 3egati5os
3'
Arquitetura e Organização de Computadores
• C.emploI 1! : !I
11)1
: )1)1
1))1)
• Duas representaçBes para o ) >O )?I
1)))
))))
Adição e 0u%tração
0inal12agnitude
3(
Arquitetura e Organização de Computadores
+ +
1 1 0 0
1 0 1 0
0 0 1 0
0 1 1 1
0 1 0 1
0 0 1 0
+ +
0 1 1 1
1 0 1 0
1 1 0 1
0 0 1 0
0 1 0 1
1 1 0 1
1
1
0 0 1 1
1
1
1 0 0 0
2 + ( )
5 – ( )
3 - ( )
+
5 – ( )
7 – ( )
+ 2 – ( )
5 + ( )
2 + ( )
7 + ( )
+
5 + ( )
3 + ( )
+ 2 – ( )
Adição e 0u%tração
Complemento de 1
4)
Arquitetura e Organização de Computadores
+ +
1 1 0 1
1 0 1 1
0 0 1 0
0 1 1 1
0 1 0 1
0 0 1 0
+ +
1 0 0 1
1 0 1 1
1 1 1 0
0 0 1 1
0 1 0 1
1 1 1 0
1 1
ignore ignore
5 + ( )
2 + ( )
7 + ( )
+
5 + ( )
3 + ( )
+ 2 – ( )
2 + ( )
5 – ( )
3 – ( )
+
5 – ( )
7 – ( )
+ 2 – ( )
Adição e 0u%tração
Complemento de 2
41
Arquitetura e Organização de Computadores

0 1 0 1
0 0 1 0
5 + ( )
2 + ( )
3 + ( )


1 0 1 1
0 0 1 0 –

0 1 0 1
1 1 1 0
5 + ( )
7 + ( )

5 – ( )
7 – ( )
2 + ( )
2 – ( )

1 0 1 1
1 1 1 0 – 2 – ( )
5 – ( )
3 – ( )
Adição e 0u%tração
0inal12agnitude
42
Arquitetura e Organização de Computadores
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
1 + 1 –
2 +
3 +
4 +
5 +
6 +
7 +
2 –
3 –
4 –
5 –
6 –
7 –
8 –
0
Complemento de 2
43
Arquitetura e Organização de Computadores
+ +
1 0 0 1
0 0 1 0
0 1 1 1
0 0 1 0
7 + ( )
2 + ( )
9 + ( )
+
+
+
1 0 0 1
1 1 1 0
0 1 1 1
1 1 1 0
7 + ( )
5 + ( )
+ 2 – ( )
2 + ( )
7 – ( )
5 – ( )
+
7 – ( )
9 – ( )
+ 2 – ( )
Puando #Q o5er$lo-R
Como detectar se #ou5e o5er$lo-R
O5er$lo- em
Complemento de 2
44
Arquitetura e Organização de Computadores
+ +
1 0 1 1
1 0 0 1
0 0 1 0
1 0 0 1
0 1 1 1
0 0 1 0
7 + ( )
2 + ( )
9 + ( )
+
+
+
0 1 1 1
1 0 0 1
1 1 1 0
0 1 0 1
0 1 1 1
1 1 1 0
7 + ( )
5 + ( )
+ 2 – ( )
1
1
c
4
0 =
c
3
1 =
c
4
0 =
c
3
0 =
c
4
1 =
c
3
1 =
c
4
1 =
c
3
0 =
2 + ( )
7 – ( )
5 – ( )
+
7 – ( )
9 – ( )
+ 2 – ( )
Puando #Q o5er$lo-R
Como detectar se #ou5e o5er$lo-R
O5er$lo- em
Complemento de 2
4!
Arquitetura e Organização de Computadores
Um valor pode ter sua representação extendida de
N bits para M bits (com M > N) usando:

Extensão de Sinal

Extensão de Zero
C.tensão de @its
4"
Arquitetura e Organização de Computadores
O bit de sinal é copiado para os bits mais significativos.
O valor do número é mantido o mesmo.
Exemplo 1:

Representação de 3 com 4-bit = 0011

Representação sign-extended de 3 com 8-bit: 00000011
Exemplo 2:

Representação de -5 com 4-bit = 1011

Representação sign-extended de -5 com 8-bit: 11111011
C.tensão de 0inal
4&
Arquitetura e Organização de Computadores
Zeros são copiados nos bits mais significativos.
O valor do número pode ser alterado.
Exemplo 1:

Valor em 4-bit = 0011

Valor zero-extended com 8-bit: 00000011
Exemplo 2:

Valor em 4-bit = 1011

Valor zero-extended com 8-bit: 00001011
C.tensão de Sero
4'
Arquitetura e Organização de Computadores
0istema ai.a de =alores
6nsigned M)/ 2
N
-1N
0ignT2agnitude M->2
N11
-1?/ 2
N11
-1N
T-oUs Complement M-2
N11
/ 2
N11
-1N
Representação em 4-bit:
1'
1))) 1))1
1& 1" 1! 14 13 12 11 ) 1 2 3 4 ! " & ' ( 1) 11 12 13 14 1!
1)1) 1)11 11)) 11)1 111) 1111 )))) )))1 ))1) ))11 )1)) )1)1 )11) )111
T-o;s Complement
1)))
1))1 1)1) 1)11 11)) 11)1 111) 1111
))))
)))1 ))1) ))11 )1)) )1)1 )11) )111
1))) 1))1 1)1) 1)11 11)) 11)1 111) 1111 )))) )))1 ))1) ))11 )1)) )1)1 )11) )111
0ignT2agnitude
6nsigned
Comparação
4(
Arquitetura e Organização de Computadores
Ponto Fixo

Exemplo: 6.75 com 4 bits para inteiros e 4
bits para a fração

Representação de
34meros Reais
!)
Arquitetura e Organização de Computadores
Ponto Fixo

Exemplo: 6.75 com 4 bits para inteiros e 4
bits para a fração
6 0.75
0110.1100
01101100
2
2
+ 2
1
+ 2
-1
+ 2
-2
= 6.75
OBS.: O ponto binário não faz parte da notação e é implícito
Representação de
34meros Reais
!1
Arquitetura e Organização de Computadores
Represente -6.5
10
usando uma representação binária de 8 bits (4 inteiro e
4 fração).
6.5 0110.1000

Sinal/magnitude:
11101000

Complemento de 2:
Ìnverte os bits: 10010111
Soma 1 ao lsb: + 1
10011000
Representação de
34meros Reais
!2
Arquitetura e Organização de Computadores
Vig#17recision ComputationI Applications and C#allenges
David H. Bailey, Lawrence @erWele+ National Laboratory, USA
T#e loating17oint 6nit o$ t#e Xaguar .'" Core
Jeff Rupley, John King, Eric Quinnell, Frank Galloway, Ken Patton, Peter-Michael Seidel, James
Dinh, Hai Bui and Anasua Bhowmik (A2D, USA & Ìndia)
0plit1pat# used loating 7oint 2ultipl+ ACcumulate >72AC?
Suresh Srinivasan, Ketan Budhiya, Rajaraman Ramanarayanan, P. Sahit Babu, Tiju Jacob, Sanu k.
Mathew, Ram Krishnamurty and Vasantha Errgauntla (Lntel Ìndia & USA)
76 Yenerator $or Design 0pace C.ploration
Sameh Galal, Ofer Shacham, John S. Brunhaver ÌÌ, Jing Pu, Artem Vassiliev and Mark Horowitz
(0tan$ord University, USA)
!3
Arquitetura e Organização de Computadores
2anaging Computation/ 7recision/ Accurac+/ and 7er$ormance on C.a0cale 0+stems
ExaScale-level systems may be available in less than a decade. Computer architects are
already thinking of, and planning ways to achieve such levels of performance in the near
future. Ìt can be expected that researchers and engineers will carry out scientific and
engineering computations more complex than ever before, and will attempt breakthroughs
not possible today. Ìf the size of the problems solved on such machines scales accordingly,
we may face new issues related to precision, accuracy, performance, and programmability.
The session consists of three talks:
7recision/ Accurac+/ Rounding/ and Crror 7ropagation
Marius Cornea, Lntel Corporation, USA.
2anaging t#e Dense *inear Alge%ra 0o$t-are 0tacW
Robert A. van de Geijn, University of Texas at Austin, USA.
3umerical Accurac+ and Reproduci%ilit+ at C.a0cale
Hong Diep Nguyen and Jim Demmel, UC @erWele+, USA.
!4
Arquitetura e Organização de Computadores
Lmpro5ed Arc#itectures $or a loating17oint used Dot 7roduct 6nit
Jongwook Sohn and Earl Swartzlander (UT Austin, USA)
loating 7oint Arc#itecture C.tensions $or Optimized 2atri. actorization
Ardavan Pedram, Robert van de Geijn and Andreas Gerstlauer (UT Austin, USA)
A ast Circuit Topolog+ $or inding t#e 2a.imum o$ n W1%it 3um%ers
Bilgiday Yuce, H. Fatih Ugurdag, Sezer Goren and Gunhan Dundar (Bogazici University,
Ozyegin University & Yeditepe University, TurWe+)
A 3on1*inearT*inear Lnstruction 0et C.tension $or *ig#t-eig#t Cip#ers
Susanne Engels, Elif Bilge Kavun, Hristina Mihajloska, Christof Paar and Tolga Yalcin (Ruhr-
Univ. Bochum, Yerman+ & Ss Cyril and Methodius Univ. Skopje, 2acedonia)
!!
Arquitetura e Organização de Computadores
A ormall+1=eri$ied C Compiler 0upporting loating17oint Arit#metic
Sylvie Boldo, Jacques-Henri Jourdan, Xavier Leroy and Guillaume Melquiond (Univ. Paris-Sud & ÌNRÌA
Paris, rance)
ault Detection in R30 2ontgomer+ 2odular 2ultiplication
Julien Eynard, Filippo Gandino and Jean-Claude Bajard (UPMC Paris, France & Politecnico Torino, Ltal+)
T#e unar+ arit#metical algorit#m in %imodular num%er s+stems
Petr Kurka (Charles Univ. Prague, Czech Rep.) and Martin Delacourt (Centro Modelamiento Matematico,
C#ile)
7arallel modular multiplication on multi1core processors
Pascal Giorgi, Laurent Ìmbert and Thomas Ìzard (LÌRMM Montpellier, rance)
Comparison %et-een %inar+"4 and decimal"4 $loating1point num%ers
Nicolas Brisebarre, Christoph Lauter, Marc Mezzarobba and Jean-Michel Muller (ENS Lyon & UPMC Paris,
rance)
Accurate 7arallel loating17oint Accumulation
Edin Kadric, Paul Gurniak and Andre Dehon (Univ. of Pennsylvania, USA)
!"
Arquitetura e Organização de Computadores
Tipo 3umérico
!&
Arquitetura e Organização de Computadores
Operações aritméticas estão sujeitas a
overflow.
Quando o overflow acontece?

Ao somarmos dois positivos, obtemos um
negativo.

Ao somarmos dois negativos, obtemos um
positivo.

Ao subtrairmos um negativo de um positivo e
obtemos um negativo.

Ao subtrairmos um positivo de um negativo e
obtemos um positivo.
Detectando O5er$lo-
!'
Arquitetura e Organização de Computadores
O quadro a seguir ilustram estes casos:
Pode ocorrer overflow se B for 0?
Pode ocorrer overflow se A for 0?
Detectando O5er$lo-
!(
Arquitetura e Organização de Computadores
Se o bit extra gerado, for necessário, pode
acontecer uma interrupção (exceção):

Ao detectar a interrupção, o controle saltará
para um endereço predefinido para
tratamento da interrupção.

O endereço interrompido é salvo para uma
possível retomada.

No caso do MÌPS, o endereço de retorno é salvo
no registrador EPC (Exception program counter).
C$eitos do O5er$lo-
")
Arquitetura e Organização de Computadores
Linguagem de programação ou finalidade
da aplicação podem influir para este
comportamento.
No MÌPS, instruções unsigned não
"detectam¨ overflow.

addu, addiu, subu.
C$eitos do O5er$lo-
"1
Arquitetura e Organização de Computadores
Representação em
7onto i.o
Adição
Subtração
Multiplicação
Divisão
Multiplicação por Somas sucessivas
Divisão por Subtrações sucessivas
"2
Arquitetura e Organização de Computadores
Operação mais complexa do que adição

Na verdade ela representa um conjunto de
adições.
Necessita de mais tempo e mais área de
silício para ser implementada.
2ultiplicação
"3
Arquitetura e Organização de Computadores
2ultiplicação
"4
Arquitetura e Organização de Computadores
"!
Arquitetura e Organização de Computadores
Camin#o de Dados
""
Arquitetura e Organização de Computadores
Multiplicação
mais rápida
Array de somadores

Entrada de cada somador = (bit do
multiplicador && resultado do
somador anterior)
– Proporciona:

Entrega os resultados de cada
parcial quase que
simultaneamente.

Proporciona paralelização.
"&
Arquitetura e Organização de Computadores
Menos freqüente e mais peculiar que a
multiplicação.
Pode ser efetuada através de sucessivas
subtrações ou deslocamentos.
Di5isão
"'
Arquitetura e Organização de Computadores
Di5isão
"(
Arquitetura e Organização de Computadores
Di5isão
&)
Arquitetura e Organização de Computadores
Hardware de multiplicação e divisão são
similares.
No entanto, o hardware formado pelo
conjunto de somadores não pode ser
utilizado na divisão.

Por quê?

Na divisão, as sub-operações são dependentes.

Não temos como realizar a próxima etapa até sabermos
o valor do resto.
Di5isão
&1
Arquitetura e Organização de Computadores
Existem várias formas de representação que "flutuam¨ a vírgula
mudando o expoente:
Exemplo:

2,14 = 0,0214 x 10
2
= 214 x 10
-2

orma 3ormalizadaI Único dígito diferente de zero antes da
vírgula.

Só existe uma forma de representar um número.

Em geral, melhor que a forma não normalizada na representação
computacional de números em ponto flutuante.
7onto lutuante
2oti5ação
&2
Arquitetura e Organização de Computadores
Formato de representação digital de números reais usado
nos PCs.
Na representação normalizada binária há apenas um "1¨
antes da vírgula.
Tudo é armazenado em base 2.
Exemplo:

1,01101x(10)101

Mantissa = 1,01101

Expoente = 101
7onto lutuante
2oti5ação
&3
Arquitetura e Organização de Computadores
Caso a forma normalizada seja usada, o "1¨ antes da
vírgula pode ficar implícito economizando um bit. É o
chamado %it escondido.
O número de bits para representar a mantissa e o
expoente depende da norma.
7onto lutuante
2oti5ação
&4
Arquitetura e Organização de Computadores
Precisamos de uma maneira para
representar:

Números com frações, por exemplo, 3,1416

Números muito pequenos, por exemplo,
0,00000001

Números muito grandes, por exemplo,
3,15576 x 10
9
7onto lutuante
&!
Arquitetura e Organização de Computadores
Representação

Sinal Fração Expoente

Mais bits para a fração fornece mais precisão

Mais bits para o expoente, aumenta o range de
valores.
ÌEEE 754.

Precisão única : expoente 8 bits, fração 23
bits.

Precisão dupla: expoente 11 bits, fração 52
bits.
7onto lutuante
&"
Arquitetura e Organização de Computadores
Representação de um número de ponto flutuante.
Expoentes negativos não utilizam complemento de 2.
Logo, o número em ponto flutuante é calculado desta forma:
• (-1)
sinal

x fração x 2
(expoente ÷ 127)
precisão simples
• (-1)
sinal

x fração x 2
(expoente ÷ 1023)
precisão dupla
7onto lutuante
&&
Arquitetura e Organização de Computadores
Operações aritiméticas estão sujeitas a
overflow e underflow.
Underflow

Resultado obtido é pequeno demais para ser
representado em um número de ponto
flutuante.
7onto lutuante
OperaçBes Aritméticas
&'
Arquitetura e Organização de Computadores
7onto lutuante
Adição
&(
Arquitetura e Organização de Computadores
Hw: Soma
')
Arquitetura e Organização de Computadores
7onto lutuante
2ultiplicação
'1
Arquitetura e Organização de Computadores
Além do underflow, podemos ter problemas
relativo a forma de arredondamento.
Formas de arredondamento:

Sempre arredondar para cima.

Sempre arredondar para baixo.

Truncamento.

Arredondar para o próximo par.
7onto lutuante
Arredondadmento
'2
Arquitetura e Organização de Computadores
Como lidar:

Uso de 3 bits adicionais

Bit guarda

Utilizado para melhorar a precisão do arredonamento.

Bit arredondamento

Utilizado para encontrar o número mais próximo que
possa ser representado no formato.

Stick bit

Utilizado para verificar se existe algum bit diferente de 0
após o bit de arredondamento.
7onto lutuante
Arredondadmento
'3
Arquitetura e Organização de Computadores
Até a década de 1980, cada fabricante de computador
tinha seu próprio formato de representação de ponto
flutuante.
ÌEEE: Institute of Electrical and Electronic Engineers.
Organização composta por engenheiros, cientistas e
estudantes, que desenvolvem padrões para a indústria de
computadores e eletro-eletrônicos.
O padrão ÌEEE 754 foi inventado para padronizar essa
forma de representação.
7onto lutuante
LCCC &!411('!
'4
Arquitetura e Organização de Computadores
A primeira versão desse padrão data de 1985 e perdurou
por 23 anos até ser substituída em Agosto de 2008 por
uma outra versão da ÌEEE 754.
Padrão mais usado para computação de ponto flutuante
Formatos e aritmética binária são preservados no ÌEEE
754-2008
7onto lutuante
LCCC &!411('!
'!
Arquitetura e Organização de Computadores
4 formatos de representação de valores de ponto flutuante:

Precisão simples (32 bits)

Precisão dupla (64 bits)

Precisão simples estendida (>= 43 bits, não é comumente
usada)

Precisão dupla estendida (>= 79 bits, usualmente
implementada com 80 bits)
Apenas a precisão simples é requerida pelo padrão, as
outras são opcionais.
7onto lutuante
LCCC &!411('!
'"
Arquitetura e Organização de Computadores
Polarização do Expoente

O expoente é polarizado por:

(2
e-1
)-1

e: Número de bits do expoente

Representação de um número com expoente 25 numa
representação com 8 bits para expoente:
• 25 + (2
8-1
)-1 = 25 + 128 -1 = 152

A polarização é realizada pois os expoentes têm que
possuir valores com sinal para poder representar valores
grandes e pequenos. Portanto, o expoente é polarizado
antes de ser armazenado ajustando seu valor para colocá-
lo dentro de uma faixa sem sinal, adequado para
comparação.
7onto lutuante
LCCC &!411('!
'&
Arquitetura e Organização de Computadores
O bit mais significativo da mantissa não é armazenado, porém ele pode
ser determinado pelo valor do expoente polarizado.
Casos
1. Se 0 < expoente < 2
e
-1, então o bit mais significativo é 1 e o número é dito
normalizado.
2. Expoente = 0 e Mantissa = 0, número não normalizado.
3. Expoente = 0 e Mantissa = 0, ±0 depende do bit de sinal.
4. Expoente =
e
-! e Mantissa = 0, ±× depende do bit de sinal.
5. Expoente =
e
-! e Mantissa = 0, NaN.
7onto lutuante
LCCC &!411('!
''
Arquitetura e Organização de Computadores
Precisão simples
◦ Polarizado com 127

Expoente vai de -126 a +127.

-127 não pode pois significa número não normalizado ou zero.

128 seria polarizado para 255, não pode pois é NaN ou infinito
◦ O valor do número é:
v= s x 2
e
x m
7onto lutuante
LCCC &!411('!
'(
Arquitetura e Organização de Computadores
Exemplo:

Como representar o número -118.625 no
padrão ÌEEE 754?
7onto lutuante
LCCC &!411('!
()
Arquitetura e Organização de Computadores
Exemplo:
Para transformar de volta:
Bit 1 no sinal indica número negativo.
Expoente 10000101 = 133
10
◦ Portanto o valor antes da polarização era:

x + (2
8-1
)-1 = 133

x + 127 = 133

x = 6
Com o bit escondido temos a mantissa:

1.110110101 x 2
6 =
1110110.101 = 118.625
Como o bit de sinal representa um número negativo temos:

-118.625
7onto lutuante
LCCC &!411('!
(1
Arquitetura e Organização de Computadores
Precisão dupla
◦ Essencialmente a mesma coisa da precisão
simples só que os campos são maiores.
◦ Polarizado com 1023
7onto lutuante
LCCC &!411('!
(2
Arquitetura e Organização de Computadores
Arredondamento

4 modos de arredondamento

Padrão
1. Arredondamento para o mais próximo:
– Ties to Even: Se o número cai no meio, ele é arredondado para o valo mais
próximo com um 0 no bit menos significativo.
– Ties awa" from zero: se o número cai no meio ele é arredondado para o
valor mais próximo para cima (para números positivos) ou para baixo (para
números negativos).

Arredondamentos direcionados
1. Arredondamento para 0: Truncamento
2. Arredondamento para +×: Arredonda direcionado para +×
3. Arredondamento para -×: Arredonda direcionado para -×
7onto lutuante
LCCC &!411('!
(3
Arquitetura e Organização de Computadores
Ìnclui praticamente todo o ÌEE 754-1985 e o ÌEE 854-1987
que generalizava o ÌEEE 754-1985 para cobrir aritmética
decimal além da binária.
Define:

Formatos Aritméticos

Formatos de Ìntercâmbio

Algoritmos de Arredondamento

Operações

Manuseio de Exceções
7onto lutuante
LCCC &!412))'
(4
Arquitetura e Organização de Computadores
OperaçBes

As operações requeridas pela norma são:
• Operações Aritméticas(adição, subtração, multiplicação, divisão,
raiz quadrada, etc.)
• Conversões (entre formatos)
• Dimensionamento e quantificação
• Cópia e manipulamento do sinal (abs, negate, etc.)
• Classificação e teste para NaNs
• Testes e definição de sinalizadores
• Operações diversas

Uma nova cláusula dessa norma recomenda 50 operações
incluindo log, potenciação, etc. Porém todas são opcionais.
7onto lutuante
LCCC &!412))'
(!
Arquitetura e Organização de Computadores
Manuseio de Exceção

5 tipos de exceção, cada uma possui um sinalizador de
status correspondente que é levantado quando a exceção
ocorre.
• Operação Ìnválida. C.I Raiz quadrada de número negativo
• Divisão por zero
• Overflow
• Underflow

Ìnexatidão
7onto lutuante
LCCC &!412))'
("
Arquitetura e Organização de Computadores
Reproduci%ilidade

O ÌEEE 754-1985 permitia várias variações de
implementações
• Codificação de alguns valores

Detecção de algumas exceções

O ÌEE 754-2008 "enxugou¨ várias dessas, porém algumas
variações ainda existem (especialmente para formatos
binários)

A norma recomenda que os padrões de linguagem devem
prover meios de escrever programas reproduzíveis e
descreve o que deve ser feito para atingir isso.
7onto lutuante
LCCC &!412))'
(&
Arquitetura e Organização de Computadores
Computadores lidam com formatos
numéricos de ponto fixo e ponto flutuante
1985: Uso do padrão ÌEEE 754

aumenta a portabilidade dos programas que
trabalham com números nesse formato

melhorar a qualidade das operações
aritméticas realizadas
Representação utilizando
7onto lutuante
('
Arquitetura e Organização de Computadores

Sinal: 1 bit (bit 31)

Expoente: 8 bits (bits 30 à 23)

Mantissa: 23 bits (bits 22 à 0)

Representação Geral:
>11?
sinal
. mantissa . 2
e.poente
Representação utilizando
7onto lutuante
((
Arquitetura e Organização de Computadores
Forma Normalizada:

número não possui dígito não significativo na
representação

contém 24 bits e não 23 (primeiro dígito
sempre 1 e implícito)

aumenta a precisão dos números
Representação:
>11?
sinal
. >1 : mantissa? . 2
e.poente
Representação utilizando
7onto lutuante
1))
Arquitetura e Organização de Computadores
Expoente em nota#$o com peso

Peso = número a ser subtraído do valor
representado no expoente de maneira a
representar o valor real do expoente
– Valor = 127
10

Facilidade para ordenações a partir de
comparações inteiras
Nova Representação:
>11?
sinal
. >1 : mantissa? . 2
>e.poente H peso?
Representação utilizando
7onto lutuante
1)1
Arquitetura e Organização de Computadores
Representação utilizando
7onto lutuante
1)2
Arquitetura e Organização de Computadores
Representação utilizando
7onto lutuante
1)3
Arquitetura e Organização de Computadores
Estrutura Geral
1)4
Arquitetura e Organização de Computadores
76 Lnternamente
1)!
Arquitetura e Organização de Computadores
1)"
Arquitetura e Organização de Computadores
1)&
Arquitetura e Organização de Computadores
1)'
Arquitetura e Organização de Computadores
1)(
Arquitetura e Organização de Computadores
11)
Arquitetura e Organização de Computadores
S EEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF
31 30 23 22 1 0
Sign bit Biased Exponent Significand
Bits

Bit 31 for sign

S=1 for negative numbers, 0 for positive numbers

Bits 23-30 for biased exponent

The real exponent = E –127

127 is calle bias!

Bits 0-22 for significand
LCCC &!4
0ingle 7recision
111
Arquitetura e Organização de Computadores
LCCC &!4
0ingle 7recision
Subnormal numbers reduce the chance of underflow.

Without subnormal numbers, the smallest positive
number is 2
÷127

With subnormal numbers, the smallest positive
number is 0.00000000000000000000001 *2
-126



=2
÷(126+23)
=2
-149
112
Arquitetura e Organização de Computadores
Lmplementing 7 Addition
%+ 0o$t-are
How to implement x+y where x and y are two single precision
FP numbers?
Step 1: Convert x and y into ÌEEE format
Step 2: Align two significands if two exponents are different.

"et e1 an e2 are the exponents of x an #, respectivel#, an
assume e1$ e2! Shift the significant %incluing the implicit 1& of #
right e1–e2 bits to compensate for the change in exponent!
Step 3: Add two (adjusted) significands.
Step 4: Normalize the result.
113
Arquitetura e Organização de Computadores
How to implement x+y where x=2.625 and y= ÷ 4.75?
Step 1: Convert x and y into ÌEEE format
x=2.625 → 10.101 (Binary)
→ 1.0101 * 2
1
(Normal form)
→ 1.0101 * 2
128
(ÌEEE format)
→ 0 10000000 01010000000000000000000
Comments: The fractional part can be converted by multiplication.
(This is the inverse of the division method for integers.)
0.625 × 2 = 1.25 1 ( the most significant bit in fraction)
0.25 × 2 = 0.5 0
0.5 × 2 = 1.0 1 ( the least significant bit in fraction)
114
Arquitetura e Organização de Computadores
How to implement x+y where x=2.625 and y= ÷ 4.75?
Step 1: Convert x and y into ÌEEE format
x=2.625 → 10.101 (Binary)
→ 1.0101 * 2
1
(Normal form)
→ 1.0101 * 2
128
(ÌEEE format)
→ 0 10000000 01010000000000000000000
Comments: The fractional part can be converted by multiplication.
(This is the inverse of the division method for integers.)
0.625 × 2 = 1.25 1 ( the most significant bit in fraction)
0.25 × 2 = 0.5 0
0.5 × 2 = 1.0 1 ( the least significant bit in fraction)
11!
Arquitetura e Organização de Computadores
y= ÷ 4.75 → ÷ 100.11 (Binary)
→ ÷ 1.0011 * 2
2
(Normal form)
→ ÷ 1.0011 * 2
129
(ÌEEE format)
→ 1 10000001 00110000000000000000000
Step 2: Align two significands.
The significand of x = 1.0101 → 0.10101 (After
shift right 1 bit)
'omments( x=0!10101)2
12*
an #= –1!0011 )2
12*

after the alignment!
11"
Arquitetura e Organização de Computadores
Step 3: Add two (adjusted) significands.
0.10101 The adjusted significand of x
÷ 1.00110 The significand of y
= ÷ 0. 10001 The significand of x+y
Step 4: Normalize the result.
Result = ÷ 0. 10001 * 2
129
→ ÷ 1.0001 * 2
128

→ 1 10000000 00010000000000000000000
(Normal form)