Post on 04-Jan-2016
description
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
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, ...
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…
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:
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:
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)
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”
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
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
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
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
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
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+
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)
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)
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
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.