Você está na página 1de 17

Mestrado Integrado em Engenharia Informtica e Computao

FEUP

Arquitetura e Organizao de
Computadores - EIC0083
1 ano, 1 semestre - 2014/15

Aritmtica binria
Antnio Jos Duarte Arajo

Aritmtica binria: resumo


Sistemas de numerao
Aritmtica binria sem sinal
Dimenso dos dados e overflow
Representao de nmeros com sinal
Adio/subtrao em complemento para 2
Vrgula flutuante: representao e operaes
aritmticas
Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

Representao de informao em binrio


Sistemas Digitais processam dados
codificados apenas com 0 e 1
Um bit (binary digit): duas coisas diferentes
(nmeros, cores, estados, etc...)

N bits: 2N entidades diferentes


Exemplo (com 3 bits):
000, 001, 010, 011, 100, 101, 110, 111
Como representar nmeros usando 0 e 1?
Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

Representao de nmeros
Nmeros inteiros
Sistema posicional
Em base 10 (dez dgitos: 0, 1, 2, 3, , 8 e 9)
45210 = 4x102 + 5x101 + 2x100
Em base 2 (dois dgitos: 0 e 1)
11012 = 1x23 + 1x22 + 0x21 + 1x20 = 1310
Potncias inteiras de 2:
20=1, 21=2, 22=4, 23=8, ... 27=128, 28=256,
..., 210=1024, ...
Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

Representao de nmeros
Como representar um nmero em base 2?
Dividindo sucessivamente por 2:
37 2
17 18 2
1 0 9 2
1 4 2
bit menos significativo
0 2 2
(o da direita, LSB least significant bit)
0 1

bit mais significativo


(o da esquerda, MSB most
significant bit)

3710 = 1001012
Ou, decompor em potncias de 2:
3710 = 32 + 4 + 1 = 1x25 + 1x22 + 1x20 = 1001012
Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

Nmeros fracionrios
direita da vrgula
Potncias negativas da base:
Em base 10:
35,7210 = 3x101 + 5x100 + 7x10-1 + 2x10-2
Em base 2:
110,1012 = 1x22 + 1x21 + 0x20 + 1x2-1 + 0x2-2 + 1x2-3
= 6,62510

Representar a parte fracionria em base 2


Multiplicando sucessivamente por 2:
0,7210 :

Antnio Jos Arajo, DEEC/FEUP

0,72 x 2 = 1,44
0,44 x 2 = 0,88
0,88 x 2 = 1,76
0,76 x 2 = 1,52
...

0,7210 =0,10112

AOCO_2014/15 - Aritmtica binria

Sistemas hexadecimal (base 16) e


octal (base 8)
Caso especial porque 16=24
16 dgitos: 0 a 9 e A a F (A vale 10, F vale 15)
cada dgito hex representado por 4 bits
2B416 = 0010101101002
AA,1C16= 10101010,000111002

interesse: compactar representao binria


mudanas entre base 10 e 16
fcil usando base 2!

E se for octal (base 8)? 8=23 (cada dgito


octal representado por 3 bits)
Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

Adio binria
Recordar a adio em decimal:

Adio em binrio:
1 1 0 0

1
376
+ 18
394

transporte (carry)

transporte

1 1 0 1
+0 1 0 0
1 0 0 0 1

13
+4
17
em decimal

um mais um d dois (102)


escreve-se 0 e gera-se o transporte 1
para a soma seguinte
Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

Subtrao binria
1 1 0 1
- 0 1 1 0
1

Duas formas de indicar


subtrair o borrow
do diminuendo

zero para um d um

1 1
-1
1 0 0 1
- 0 1 1 0
1 1

borrow
10

1 1 0 1
- 0 1 1 0
1 1

correco

1
0
+
- 1

1 0 1
1 1 0
1
0 1 0
1 1
adicionar o borrow
ao diminuidor

um para dois (102) d 1


usou-se um 1 do andar seguinte
(gerou-se um borrow)

subtrair o borrow
do diminuendo
borrow
10

1 0 0 1
- 0 1 1 0
1 1 1

zero para zero d zero

um para dois
d um e vai um...

1
0
+1
- 1
0

1 1 0 1
- 1 0 1 0
0 1 1 1
zero para um d um
um para um d zero

Antnio Jos Arajo, DEEC/FEUP

correco

1
-1
0 0 0 1
- 0 1 1 0
0 1 1 1

1 0 1
1 1 0
1 1 0
1 1 1

um para um d zero
adicionar o borrow
ao diminuidor

AOCO_2014/15 - Aritmtica binria

Multiplicao binria
Em binrio a multiplicao realizada como em decimal:
x

0
1 0
+ 0 0 0
0 1 1

1
0
1
0
1
0
0

0
1
0
0
1
0
1

1
0
1
0
0
0
1

1
1
1
0
0
0
1

um vezes 1011
zero vezes 1011

1 1
x5
5 5
em decimal

Caso particular: multiplicar X por 2N equivale a deslocar os bits de


X de N posies para a esquerda (ou, acrescentar N zeros direita)
2610 = 00110102
26 x 4 = 10410 = 11010002
Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

10

Diviso binria por deslocamento


Tambm na diviso comum o divisor ser potncia
de 2: evita-se a operao diviso e obtm-se o quociente por
deslocamento do dividendo

Dividir X por 2N equivale a deslocar os bits de X


de N posies para a direita (ou, eliminar os N bits da
direita)
Exemplo:

10410 = 11010002
104 4 = 2610 = 00110102

Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

11

Dimenso dos dados e overflow


Considere-se a operao de nmeros sem sinal e a utilizao de 4 bits
para os representar (operandos e resultado). Ser sempre possvel
representar o resultado de uma operao aritmtica?

Adio

Subtrao

transporte = 0: no ocorre overflow


(9)
1 0 0 1
(3)
+ 0 0 1 1
1 1 0 0 (12)
0

resultado com 4 bits correcto


1

transporte = 1: ocorre overflow

1 1 0 0
+ 0 1 1 1
1 0 0 1 1

(12)
(5)
(3)

resultado com 4 bits incorrecto

borrow = 0: no ocorre overflow

1 1 0 1 (13)
- 0 1 1 0
(6)
0 1 1 1
(7)
resultado com 4 bits correcto
borrow = 1: ocorre overflow
(6)
0 1 1 0
- 1 1 0 1 (13)
(9)
1 1 0 0 1
1

resultado com 4 bits incorrecto

Na adio (subtrao) de nmeros sem sinal, representados com N bits, a


ocorrncia de carry (borrow) significa a ocorrncia de excesso (overflow)
Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

12

Representao de nmeros negativos


Sinal e magnitude
1 bit (MSB) para sinal: 1=negativo, 0=positivo
(vantagens/desvantagens, como operar, etc. -> ver na aula!)

Complemento para a base b (com N dgitos)


se positivo, X representa-se em binrio puro
-X representa-se por Y (positivo) = bN-X
exemplo: base 10 com 4 dgitos (X[-5000; 4999])
negativos

positivos

5000

(1)0000

mximo negativo
(-5000)

zero
(0000)

Antnio Jos Arajo, DEEC/FEUP

(1)4999

mximo positivo
(4999)

AOCO_2014/15 - Aritmtica binria

13

Exemplo: complemento para 10 (com 4 dgitos)


9999 (-1)
9998 (-2)

0000 0001

Algumas adies:

0002

9997 (
-3)
+1345 (+1345)
11342 (+1342)

9997 (-3)

sinnimo de
deu a volta

7500
(-2500)

negativos

positivos

2500

-X, se negativo,
dado por bN-X

4324 (+4324)
+7456 (-2544)
11780 (+1780)
4324 (+4324)
+2151 (+2151)
6475 (-3525)

h overflow!
4999 (o maior positivo)
5000
(representa 5000, o mais negativo)
Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

no confundir overflow
com a existncia de carry!
14

Complemento para 2 (com 4 bits)


1111 (-1)
1110 (-2)

0000 0001
0011

Algumas adies:
1101 (-3)
+0101 (+5)
10010 (+2)

1101 (-3)

1100 (-4)

negativos

positivos

0100

0010 (+2)
+0100 (+4)
0110 (+6)
1110 (-2)
+1100 (-4)
11010 (-6)
0100 (+4)
+0100 (+4)
1000 (-8)

neste formato,
X[-8; 7]

0111 (o maior positivo)


1000
(representa 8, o mais negativo)
Antnio Jos Arajo, DEEC/FEUP

overflow!

AOCO_2014/15 - Aritmtica binria

15

Complemento para a base


Como trocar o sinal a um nmero?
-3452 representa-se por 10000-3452 = (9999-3452) + 1
complemento de um dgito d na base b como b-1-d
em base 10: o complemento de d 9-d

trocar o sinal = complementar os dgitos todos e somar 1

overflow: quando o resultado no cabe!


somando dois nmeros com o mesmo sinal o resultado
tem sinal diferente (deu a volta)
overflow no significa ter ocorrido carry ao somar os
MSBs
Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

16

Complemento para 2
Numa representao com N bits
Sendo X<0, X representa-se por Y=2N-X
intervalo de representao
[-2N-1, +2N-1-1] (ex. com 8 bits: X[-128; +127])

Y representado, com N bits, por:


Y=bN-12N-1 +bN-22N-2+...b121+b020

se -X negativo, o seu valor Y-2N


-X = - 2N + bN-12N-1 + bN-22N-2 + ... + b121 + b020
ou: -X = - bN-12N-1 + bN-22N-2 + ... + b121 + b020 (verificar!)

peso negativo do MSB


Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

17

Complemento para 2 com 4 bits


negativos
1000 2

positivos
(1)00002

mximo negativo
(-8)

zero

0111 2

mximo positivo
(+7)

Como trocar o sinal de um nmero?


Como em base 10: complementar os dgitos e somar 1!
+5 = 0101 (com 4 bits)
-5 = 24-5 = 10000-0101
= (1111-0101) + 1
= 1010+1 = 1011
Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

18

Adio em complemento para 2


1 1 0 1
+ 0 1 0 0
1 0 0 0 1

-3
+ 4
1

1 0 0 1
+ 1 1 0 0
1 0 1 0 1

resultado correcto, no ocorre overflow


porque os sinais dos operandos so diferentes
despreza-se sempre o transporte
para alm dos 4 bits considerados

0 0 1 1
+ 0 1 1 1
1 0 1 0

3
+ 7
10

resultado errado!
ocorre overflow porque os sinais
dos operandos so iguais e o
resultado tem o sinal oposto

1 1 1 0
+ 1 1 0 1
1 1 0 1 1

resultado errado!
no h carry-out mas ocorre overflow
porque os sinais dos operandos so
iguais e o resultado tem o sinal oposto

Antnio Jos Arajo, DEEC/FEUP

-7
+ 4
-1 1

-2
+ -3
-5

resultado correcto, no ocorre overflow


Generalizando, na adio (compl. para 2):
se os operandos tiverem sinais opostos
nunca ocorrer overflow; caso contrrio
poder existir overflow

AOCO_2014/15 - Aritmtica binria

19

Subtrao em complemento para 2


1 0 0 1
- 0 1 0 0
0 1 0 1

1 1 0 1
- 0 1 0 0
1 0 0 1

-7
- 4
-11

resultado errado!
ocorre overflow porque os sinais
dos operandos so diferentes e o
resultado tem o sinal do subtractor

0 0 1 1
- 0 1 1 1
1 1 1 0 0
despreza-se sempre o
transporte para alm dos
4 bits considerados

3
- 7
-4

-3
- 4
- 7

resultado correcto, no ocorre overflow


porque os sinais dos operandos so diferentes
e o resultado tem sinal diferente do subtractor
1 1 1 0
-1 1 1 1
1 1 1 1 1

-2
- -1
- 1

resultado correcto, no ocorre overflow,


pois a diferena de nmeros com o mesmo
sinal sempre representvel

resultado correcto:
h borrow mas no ocorre
Generalizando, na subtraco (compl. para 2):
overflow porque os sinais
se os operandos tiverem sinais opostos
dos operandos so iguais poder existir overflow; caso contrrio
nunca existir overflow

Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

20

Extenso de sinal
adicionar X=1101 com Y=110100, representados
em complemento para 2 com 4 e 6 bits:
extenso de sinal de X
11 01
1
1
01 00
+

11 1 1 0 1
+11 0 1 0 0
1 11 0 0 0 1
resultado com 6 bits ( (-3)+(-12) = -15)

adicionar X=01010 com Y=100000 representados


em complemento para 2 com 5 e 6 bits e obter um
resultado com 8 bits:
extenso de sinal de X
0 0 0 0 1 0 1 0 extenso de sinal de Y
+1 1 1 0 0 0 0 0
11 10 10 10

01 01 0
+1 00 00 0

resultado com 8 bits ( 10+(-32) = -22 )


Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

21

Representao em vrgula flutuante (VFL)


Conceitos e definies:
uma representao em sinal e grandeza para nmeros reais

sinal

expoente

Nmero de bits:

Significando, ou mantissa
1

Sinal

Expoente

m
Significando

A base (2) no representada


Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

22

Representao normalizada
Forma de representao em que o MSB do
significando 1
Exemplo: 0,10102011 = 0,01012100 = 1,01002010
normalizado

f=0100
E=010

Vantagens:
Poupa-se 1 bit no significando
Coerncia de representao
Facilita a comparao de nmeros VFL (expoentes)
Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

23

Representao do significando

Hidden bit

frao

unit in the last position


a parte fracionria do significando
confunde-se por vezes com o prprio
significando
m no inclui o 1 implcito (hidden bit)

Em binrio ( =2) f[0,1[, ou seja, M[1,2[


E o 0, como representado?
Um nmero com expoente e mantissa nulos (000 0 ou 100 0 )
representa o valor 0, no sendo de considerar o hidden bit
Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

24

Representao do expoente

Representao em excesso:
Ke = grandeza do expoente real mais negativo (2e-1-1)
(geralmente designa-se por bias)

Para nmeros ordinrios E]0, 2e-1[


Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

25

Gama de representao

Overflow
negativo

Underflow
positivo

Underflow
negativo
F-

- Mmax. Emax

Antnio Jos Arajo, DEEC/FEUP

Overflow
positivo
F+

- Mmin. Emin

Mmin. E min

AOCO_2014/15 - Aritmtica binria

Mmax. E max

26

Resultado das operaes

Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

27

Norma IEEE 754: formatos


Preciso simples: (e,m) = (8, 23)
b31 b30
S

...

b23

b22

...

b0

Preciso dupla: (e,m) = (11, 52)


b63 b62
S

...

b52

b51

...

b0

Outros, designados por formatos estendidos:


simples (e,m) = (11, 31)
duplo (e,m) = (15, 63)
Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

28

Norma IEEE 754: parmetros

Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

29

Exemplo de representao
Representar o decimal Y=25,25 em VFL com preciso
simples (32 bits)

Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

30

Adio/subtrao VFL
Sinal do resultado igual ao sinal do operando com maior
valor absoluto (comparao dos expoentes e
significandos)
Alinhamento do significando do operando com menor
valor absoluto: sofre deslocamento para a direita de
valor igual diferena dos expoentes
Adio dos significandos (subtrao se os operandos
tiverem sinais diferentes)
Expoente do resultado o expoente do operando com
maior valor absoluto
Normalizao do resultado, se necessrio (corrigindo o
expoente).
Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

31

Adio VFL: exemplo


S = 11000001010000000000000000000000
T = 11000001101100000000000000000000
Calcular S+T:
S<0 e T<0 S+T<0 SinalS+T = 1
ET>ES ES+T = ET = 131-127 = 4
ET>ES alinhar MS deslocar MS uma (= ET-ES) posio para a direita:
MS =0.110 0
0.11000 0
+ 1.01100 0
10.00100 0 normalizar: MS+T = 1.00010 0 ES+T = 4 +1 = 5
ES+T = 5 +127 = 132 = 10000100

S+T = 11000010000010000000000000000000
Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

32

Multiplicao VFL
Sinal do resultado: positivo, caso os operandos tenham
o mesmo sinal, ou negativo no caso contrrio
Multiplicao dos significandos
Adio dos expoentes e subtrao do excesso
Normalizao e ajuste do expoente, se necessrio.

Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

33

Diviso VFL
Sinal do resultado: positivo, caso os operandos tenham
o mesmo sinal, ou negativo no caso contrrio
Diviso dos significandos
Subtrao dos expoentes e adio do excesso
Normalizao e ajuste do expoente, se necessrio.

Antnio Jos Arajo, DEEC/FEUP

AOCO_2014/15 - Aritmtica binria

34