Considere um sistema de ponto flutuante dado por
, isto é, um sistema binário com seis dígitos na mantissa e expoente variando de -8 a 8 . Sejam os números
e
.
(a) Represente os números
e
nesse sistema, isto é, para cada caso indique qual o sinal, o expoente e a mantissa em formato binário utilizando 11 bits, onde tem-se 1 bit para o sinal, 4 bits para o expoente e 6 bits para a mantissa.
(a) Represente os números
Passo 1
Beleza, então o que temos é um sistema de ponto flutuante em base 2 com 6 dígitos na mantissa (t=6) e 4 bits pro expoente, que varia de L=–8 a U=8. Isso quer dizer que cada número vai ficar no formato
sinal (1 bit) | expoente (4 bits) | mantissa (6 bits)
Usamos a normalização em base 2: todo número é escrito como
sinal (1 bit) | expoente (4 bits) | mantissa (6 bits)
Usamos a normalização em base 2: todo número é escrito como
onde o expoente “e” é armazenado em forma biased (com viés) usando bias = 2^{4–1}–1 = 7.
O exercício pede pra representar em binário, bit a bit, os números
O exercício pede pra representar em binário, bit a bit, os números
no nosso sistema.
Passo 2
Converter
pra ponto flutuante:
-
Cálculo numérico:
-
Forma binária não-normalizada:
2.828427 em binário é “10.0110101000…”, porquee aí multiplica por 2. -
Normalização:
Empurro o ponto pra ficar “1.xxx”:Logoe a mantissa (a parte fracionária) é “0110101…”. -
Arredondamento pra 6 bits:
Pego os primeiros 6 bits após o ponto: 0 1 1 0 1 0
O 7º bit é 1 (e ainda tem resto), então round to nearest me faz somar 1 ao último bit:
011010 → 011011. -
Expoente biased:
e = 1
expoente armazenado = e + 7 = 1 + 7 = 8 → binário “1000”. -
Sinal:
é positivo → s = 0.
Então
fica:
s = 0 | expoente = 1000 | mantissa = 011011
s = 0 | expoente = 1000 | mantissa = 011011
Passo 3
Converter
pra ponto flutuante:
-
Parte inteira em binário:
157_{10} = 128 + 16 + 8 + 4 + 1 → 10011101_2 -
Parte fracionária em binário (~.876):
Multiplico sucessivamente por 2:
.876×2=1.752 → bit1=1, resto .752
.752×2=1.504 → bit2=1, resto .504
.504×2=1.008 → bit3=1, resto .008
.008×2=0.016 → bit4=0, resto .016
.016×2=0.032 → bit5=0
.032×2=0.064 → bit6=0
.064×2=0.128 → bit7=0
… dá “.1110000…”. -
Junta inteiro+frac:
157.876 ≈ 10011101.1110000… -
Normalização:
O “1” mais significativo tá em 2^7, então
10011101.111… = 1.001110111000… × 2^7
Logo e = 7 e mantissa = “001110111000…”. -
Arredondamento pra 6 bits:
Pego 6 bits: 0 0 1 1 1 0
O 7º bit é 1 (e tem resto), então somo 1:
001110 → 001111. -
Expoente biased:
e = 7
expoente armazenado = 7 + 7 = 14 → binário “1110”. -
Sinal:
157.876 é positivo → s = 0.
Então
fica:
s = 0 | expoente = 1110 | mantissa = 001111
s = 0 | expoente = 1110 | mantissa = 001111
Resposta
x₁ = 0 1000 011011
x₂ = 0 1110 001111
x₂ = 0 1110 001111