aritbin_aoco_201415

17
Arquitetura e Organização de Computadores - EIC0083 1º ano, 1º semestre - 2014/15 António José Duarte Araújo Mestrado Integrado em Engenharia Informática e Computação FEUP Aritmética binária António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 2 Aritmética binária: resumo Sistemas de numeração Aritmética binária sem sinal Dimensão dos dados e overflow Representação de números com sinal Adição/subtração em complemento para 2 Vírgula flutuante: representação e operações aritméticas

Upload: nadiascarvalho

Post on 04-Jan-2016

214 views

Category:

Documents


0 download

DESCRIPTION

aritbin_AOCO_201415

TRANSCRIPT

Page 1: aritbin_AOCO_201415

Arquitetura e Organização de Computadores - EIC00831º ano, 1º semestre - 2014/15

António José Duarte Araújo

Mestrado Integrado em Engenharia Informática e Computação

FEUP

Aritmética binária

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 2

Aritmética binária: resumo

• Sistemas de numeração

• Aritmética binária sem sinal

• Dimensão dos dados e overflow

• Representação de números com sinal

• Adição/subtração em complemento para 2

• Vírgula flutuante: representação e operações aritméticas

Page 2: aritbin_AOCO_201415

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 3

Representação de informação em binário

• Sistemas Digitais processam dados codificados apenas com “0” e “1”

Um bit (binary digit): duas “coisas” diferentes(números, cores, estados, etc...)

N bits: 2N entidades diferentes

Exemplo (com 3 bits): 000, 001, 010, 011, 100, 101, 110, 111

Como representar números usando “0” e “1”?

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 4

Representação de números

• Números inteiros– Sistema posicional

• Em base 10 (dez dígitos: 0, 1, 2, 3, …, 8 e 9) 45210 = 4x102 + 5x101 + 2x100

• Em base 2 (dois dígitos: 0 e 1)11012 = 1x23 + 1x22 + 0x21 + 1x20 = 1310

• Potências inteiras de 2:20=1, 21=2, 22=4, 23=8, ... 27=128, 28=256, ..., 210=1024, ...

Page 3: aritbin_AOCO_201415

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 5

Representação de números

• Como representar um número em base 2?– Dividindo sucessivamente por 2:

– Ou, decompor em potências de 2:

37 217 18 2

1 0 9 21 4 2

0 2 20 1

bit menos significativo (o da direita, LSB –least significant bit)

bit mais significativo (o da esquerda, MSB –mostsignificant bit)3710 = 1001012

3710 = 32 + 4 + 1 = 1x25 + 1x22 + 1x20 = 1001012

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 6

Números fracionários

• À direita da vírgula– Potências negativas da base:

– Representar a parte fracionária em base 2• Multiplicando sucessivamente por 2:

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

0,7210 : 0,72 x 2 = 1,440,44 x 2 = 0,880,88 x 2 = 1,760,76 x 2 = 1,52... ∴0,7210 =0,10112…

Page 4: aritbin_AOCO_201415

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 7

Sistemas hexadecimal (base 16) e octal (base 8)

• Caso especial porque 16=24

– 16 dígitos: 0 a 9 e A a F (A vale 10, F vale 15)– cada dígito hex é representado por 4 bits

• 2B416 = 0010101101002

• AA,1C16= 10101010,000111002

– interesse: “compactar” representação binária– mudanças entre base 10 e 16

• fácil usando base 2!

•E se for octal (base 8)? … 8=23 (cada dígito octal é representado por 3 bits)

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 8

Adição binária

1 1 0 10 1 0 0

1 0 0 0 1+

011 transporte0

um mais um dá dois (102)escreve-se 0 e gera-se o transporte 1para a soma seguinte

1 34

1 7+

em decimal

Recordar a adição em decimal:

3 7 6

+ 1 8

3 9 4

1 transporte (carry)

Adição em binário:

Page 5: aritbin_AOCO_201415

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 9

Subtração binária

1 1 0 1

1 0 1 01 1

-

adicionar o borrowao diminuidor

+ 10 1 1 0

1 1 0 10 1 1 0

1-

um para dois (102) dá 1

zero para um dá um

1 1 0 10 1 1 0

1 1-

borrow

101 0 0 10 1 1 0

1 1-

correcção

- 1

subtrair o borrowdo diminuendo

1 1

1 1 0 11 0 1 00 1 1 1

-

zero para um dá umum para um dá zero

1 0 0 10 1 1 0

1 1 1-

um para doisdá um e vai um...

borrow

10

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

0 0 0 10 1 1 00 1 1 1

-

- 1

subtrair o borrowdo diminuendo

1

correcçãozero para zero dá zero

1 1 0 1

1 1 1 00 1 1 1

-+1

0 1 1 0

um para um dá zero

adicionar o borrowao diminuidor

Duas formas de indicar …

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 10

Multiplicação binária

1 0 1 10 1 0 11 0 1 1

0 0 0 0 01 0 1 1 0 0

+ 0 0 0 0 0 0 00 1 1 0 1 1 1

x

zero vezes 1011

um vezes 1011

1 15

5 5x

em decimal

• Caso particular: multiplicar X por 2N equivale a deslocar os bits deX de N posições para a esquerda (ou, acrescentar N zeros à direita)

2610 = 00110102

26 x 4 = 10410 = 11010002

• Em binário a multiplicação é realizada como em decimal:

Page 6: aritbin_AOCO_201415

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 11

Divisão binária por deslocamento

• Dividir X por 2N equivale a deslocar os bits de X de N posições para a direita (ou, eliminar os N bits da direita)

• Exemplo: 10410 = 11010002

104 ÷ 4 = 2610 = 00110102

• Também na divisão é comum o divisor ser potência de 2: evita-se a operação divisão e obtém-se o quociente por deslocamento do dividendo

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 12

Dimensão dos dados e overflow

1 0 0 10 0 1 11 1 0 0

+

1 1 0 00 1 1 1

1 0 0 1 1+

1 transporte = 1: ocorre overflow

( 1 2 )( 5 )( 3 )

( 9 )( 3 )

( 1 2 )

resultado com 4 bits incorrecto

resultado com 4 bits correcto

0 transporte = 0: não ocorre overflow

1 1 0 10 1 1 00 1 1 1

-

0 1 1 01 1 0 1

1 1 0 0 1-

1 borrow = 1: ocorre overflow

( 6 )( 1 3 )

( 9 )

( 1 3 )( 6 )( 7 )

resultado com 4 bits incorrecto

resultado com 4 bits correcto

0 borrow = 0: não ocorre overflow

Adição Subtração

Considere-se a operação de números sem sinal e a utilização de 4 bits para os representar (operandos e resultado). Será sempre possível representar o resultado de uma operação aritmética?

Na adição (subtração) de números sem sinal, representados com N bits, a ocorrência de carry (borrow) significa a ocorrência de excesso (overflow)

Page 7: aritbin_AOCO_201415

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 13

Representação de números 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 dígitos)– se positivo, X representa-se em binário puro– -X representa-se por Y (positivo) = bN-X– exemplo: base 10 com 4 dígitos (X∈[-5000; 4999])

0 (1)0000

positivosnegativos

5000 (1)4999

zero(0000)

máximo positivo(4999)

máximo negativo(-5000)

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 14

Exemplo: complemento para 10 (com 4 dígitos)

4999 (o maior positivo)

0000 00010002

2500

5000(representa –5000, o mais negativo)

9999 (-1)9998 (-2)

9997 (-3)

7500 (-2500)

positivosnegativos

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

4324 (+4324)+7456 (-2544)11780 (+1780)

4324 (+4324)+2151 (+2151)6475 (-3525)

há overflow!

Algumas adições:

-X, se negativo, é dado por b N-X

não confundir overflowcom a existência de carry!

sinónimo de“deu a volta”

Page 8: aritbin_AOCO_201415

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 15

Complemento para 2 (com 4 bits)

0111 (o maior positivo)

0000 00010011

0100

1000(representa –8, o mais negativo)

1111 (-1)1110 (-2)

1101 (-3)

1100 (-4)positivosnegativos

1101 (-3)+0101 (+5)10010 (+2)

0010 (+2)+0100 (+4)0110 (+6)

0100 (+4)+0100 (+4)1000 (-8)

overflow!

Algumas adições:

1110 (-2)+1100 (-4)11010 (-6)

neste formato,

X∈[-8; 7]

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 16

Complemento para a base

• Como trocar o sinal a um número?“-3452” representa-se por 10000-3452 = (9999-3452) + 1

– complemento de um dígito d na base b como b-1-dem base 10: o complemento de d é 9-d

– trocar o sinal = complementar os dígitos todos e somar 1

• overflow: quando o resultado não cabe!– somando dois números com o mesmo sinal o resultado

tem sinal diferente (“deu a volta”)– overflow não significa ter ocorrido carry ao somar os

MSBs

Page 9: aritbin_AOCO_201415

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 17

Complemento para 2

Numa representação com N bits– Sendo –X<0, –X representa-se por Y=2N-X

– intervalo de representação• [-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

peso negativo do MSB

(verificar!)

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 18

Complemento para 2 com 4 bits

0 (1)00002

positivosnegativos

10002 01112

zero máximo positivo(+7)

máximo negativo(-8)

Como trocar o sinal de um número?Como em base 10: complementar os dígitos e somar 1!

+5 = 0101 (com 4 bits)-5 = 24-5 = 10000-0101

= (1111-0101) + 1= 1010+1 = 1011

Page 10: aritbin_AOCO_201415

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 19

Adição em complemento para 2

1 1 0 10 1 0 0

1 0 0 0 1+

despreza-se sempre o transportepara além dos 4 bits considerados

-341

+

resultado correcto, não ocorre overflowporque os sinais dos operandos são diferentes

1 0 0 11 1 0 0

1 0 1 0 1+

-7- 4

-11+

resultado errado!ocorre overflow porque os sinaisdos operandos são iguais e oresultado tem o sinal oposto

0 0 1 10 1 1 11 0 1 0

+37

1 0+

1 1 1 01 1 0 1

1 1 0 1 1+

-2- 3-5

+

resultado errado!não há carry-out mas ocorre overflowporque os sinais dos operandos sãoiguais e o resultado tem o sinal oposto

resultado correcto, não ocorre overflow

Generalizando, na adição (compl. para 2): se os operandos tiverem sinais opostos nunca ocorrerá overflow; caso contrário poderá existir overflow

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 20

Subtração em complemento para 21 1 0 10 1 0 01 0 0 1

-- 34

- 7-

resultado correcto, não ocorre overflowporque os sinais dos operandos são diferentese o resultado tem sinal diferente do subtractor

despreza-se sempre otransporte para além dos4 bits considerados

0 0 1 10 1 1 1

1 1 1 0 0-

37

- 4-

resultado correcto:há borrow mas não ocorreoverflow porque os sinaisdos operandos são iguais

1 0 0 10 1 0 00 1 0 1

--74

-11-

resultado errado!ocorre overflow porque os sinaisdos operandos são diferentes e oresultado tem o sinal do subtractor

1 1 1 01 1 1 1

1 1 1 1 1-

- 2- 1

- 1-

resultado correcto, não ocorre overflow,pois a diferença de números com o mesmosinal é sempre representável

Generalizando, na subtracção (compl. para 2): se os operandos tiverem sinais opostos poderá existir overflow; caso contrário nunca existirá overflow

Page 11: aritbin_AOCO_201415

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 21

Extensão de sinal

1 1 0 11 1 0 1 0 0+

adicionar X=1101 com Y=110100, representadosem complemento para 2 com 4 e 6 bits:

1 1 1 1 0 11 1 0 1 0 0

1 1 1 0 0 0 1+

extensão de sinal de X

0 1 0 1 01 0 0 0 0 0+

adicionar X=01010 com Y=100000 representadosem complemento para 2 com 5 e 6 bits e obter umresultado com 8 bits:

0 0 0 0 1 0 1 0

1 1 1 0 0 0 0 0

1 1 1 0 1 0 1 0

+

extensão de sinal de X

extensão de sinal de Y

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

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

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 22

Representação em vírgula flutuante (VFL)

Sinal Expoente Significando

sinal expoente

Significando, ou “mantissa”

Número de bits:

A base β (2) não é representada

Conceitos e definições:É uma representação em sinal e grandeza para números reais

e1 m

Page 12: aritbin_AOCO_201415

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 23

Representação normalizada

Forma de representação em que o MSB do significando é 1

Vantagens:• Poupa-se 1 bit no significando

• Coerência de representação• Facilita a comparação de números VFL (expoentes)

Exemplo: 0,1010•2011 = 0,0101•2100 = 1,0100•2010

f=0100E=010

normalizado

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 24

Representação do significando

unit in the last position

Em binário (β =2) f∈[0,1[, ou seja, M∈[1,2[

E o 0, como é representado?Um número com expoente e mantissa nulos (“000 … 0” ou “100 … 0” ) representa o valor 0, não sendo de considerar o hidden bit

• a parte fracionária do significando“confunde-se” por vezes com o própriosignificando• m não inclui o 1 implícito (hidden bit)

Hidden bit fração

Page 13: aritbin_AOCO_201415

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 25

Representação do expoente

Representação em excesso:

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

Para números ordinários E∈]0, 2e-1[

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 26

Gama de representação

0

Underflowpositivo

Overflowpositivo

βEminMmin. Mmax βEmax.

Overflownegativo

Underflownegativo

βEminMmin.-Mmax

βEmax.-

F- F+

Page 14: aritbin_AOCO_201415

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 27

Resultado das operações

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 28

Norma IEEE 754: formatos

b23... ...

S E f

b22 b0b30b31

Precisão simples: (e,m) = (8, 23)

b52... ...

S E f

b51 b0b62b63

Precisão dupla: (e,m) = (11, 52)

Outros, designados por formatos estendidos:simples (e,m) = (≥11, ≥ 31)

duplo (e,m) = (≥15, ≥ 63)

Page 15: aritbin_AOCO_201415

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 29

Norma IEEE 754: parâmetros

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 30

Exemplo de representação

Representar o decimal Y=25,25 em VFL com precisão simples (32 bits)

Page 16: aritbin_AOCO_201415

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 31

Adição/subtração VFL

• Sinal do resultado igual ao sinal do operando com maiorvalor absoluto (comparação dos expoentes e significandos)

• Alinhamento do significando do operando com menorvalor absoluto: sofre deslocamento para a direita de valor igual à diferença dos expoentes

• Adição dos significandos (subtração se os operandostiverem sinais diferentes)

• Expoente do resultado é o expoente do operando com maior valor absoluto

• Normalização do resultado, se necessário (corrigindo o expoente).

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 32

Adição VFL: exemplo

Calcular S+T:

• S<0 e T<0 ⇒ S+T<0 ⇒ SinalS+T = 1

• ET>ES ⇒ alinhar MS ⇒ deslocar MS uma (= ET-ES) posição para a direita: MS =0.110 … 0

⇒ normalizar: MS+T = 1.00010 … 0 ⇒ ES+T = 4 +1 = 5

• ET>ES ⇒ ES+T = ET = 131-127 = 4

0.11000 … 0+ 1.01100 … 010.00100 … 0

S = 11000001010000000000000000000000T = 11000001101100000000000000000000

• ES+T = 5 +127 = 132 = 10000100

S+T = 11000010000010000000000000000000

Page 17: aritbin_AOCO_201415

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 33

Multiplicação VFL

• Sinal do resultado: positivo, caso os operandos tenhamo mesmo sinal, ou negativo no caso contrário

• Multiplicação dos significandos

• Adição dos expoentes e subtração do excesso

• Normalização e ajuste do expoente, se necessário.

António José Araújo, DEEC/FEUP AOCO_2014/15 - Aritmética binária 34

Divisão VFL

• Sinal do resultado: positivo, caso os operandos tenhamo mesmo sinal, ou negativo no caso contrário

• Divisão dos significandos• Subtração dos expoentes e adição do excesso• Normalização e ajuste do expoente, se necessário.