- Zjistěte a zapište i s postupem, jak se zobrazí číslo −101,8510 podle standardu IEEE 754 ve formátu s jednonásobnou přesností.
- Zjistěte a zapište i s postupem, jaké číslo se zobrazilo dle standardu IEEE 754 ve formátu binary32 takto: 3DE4000016IEEE754.
Tipy pro řešení
Podívejte se na postupy popsané v předchozích kapitolách i v předchozím tématu e-kursu. Základem je využít znalosti, na kolik míst se zobrazuje znaménko, exponent a část mantisy fraction. Důležité je uvědomit si,
že exponent se zobrazuje ve speciálním kódu. Vše ostatní už jenom o převodech.
Návrh řešení
Návrh řešení si prohlédněte až potom, co se pokusíte o nějaké vlastní.
−101,8510 = ?2IEEE754binary32.
1. Číslo zapíšete v semilogaritmickém tvaru, což předpokládá určit hodnoty s, e a m:
- Záporné znaménko signalizuje, že s = 110.
- Exponent e určíme tak, aby platilo, že 2e+1> 101,8510 ≤2e. Tudíž e = 610.
- Mantisu m určíme po dosazení ze vztahu 101,85 / 26 = 1,5914062510.
Semilogaritmický tvar, který potřebujeme, je tedy následující: −101,85510 = (−1)1 × (1 + 0,59140625) × 26.
2. Na místě znaménka bude 12, protože cifra 1 je v desítkové i dvojkové soustavě stejná.
3. Exponent získáte převodem čísla v kódu s posunutou nulou do binární soustavy:
- Nejprve exponent tzv. posuneme e = 127 + 6 = 13310.
- Následně exponent převedeme do dvojkové soustavy na 8 míst.
133 : 2 = 66 + zbytek
1
66 : 2 = 33 + zbytek
0
33 : 2 = 16 + zbytek
1
16 : 2 = 8 + zbytek
0
8 : 2 = 4 + zbytek
0
4 : 2 = 2 + zbytek
0
2 : 2 = 1 + zbytek
0
1 : 2 = 0 + zbytek
1
- Po zpětném soupistu zbytků je tedy patrné, že exponent v kódu s posunutou nulou 133 10 = 100001012
4. Od mantisy odečtete 1 a zůstane fraction f = 0,59140625.
- Provedete převod do dvojkové soustavy:
0,59140625 × 2 =
1 + 0,1828125
0,1828125 × 2 =
0 + 0,365625
0,365625 × 2 =
0 + 0,73125
0,73125 × 2 =
1 + 0,4625
0,4625 × 2 =
0 + 0,925
0,925 × 2 =
1 + 0,85
0,85 × 2 =
1 + 0,7
0,7 × 2 =
1 + 0,4
0,4 × 2 =
0 + 0,8
0,8 × 2 =
1 + 0,6
0,6 × 2 =
1 + 0,2
0,2 × 2 =
0 + 0,4
0,4 × 2 =
0 + 0,8
.
.
.
Číslo má periodu 01102, která vyplní zbytek fraction na požadovaný počet 23 míst.
- Fraction je tedy zobrazena jako 100101110110011001100112.
6. Spojíte všechny tři části v jeden celek a můžete napsat, že −10110 se ve standardu IEEE 754 ve formátu binary32 zobrazí jako 110000101100101110110011001100112IEEEbin32.
Pokud byste se řídili ve studijní kapitole zmiňovanou reprezentací, mohli byste ještě přičíst na konec jedničku a výsledné číslo by se změnilo na 110000101100101110110011001101002IEEEbin32.
3DE4000016IEEE754 = ?10.
1. V prvním kroku se nesmíte nechat zmást zápisem. Je tedy třeba provést převod čísla ze šestnáctkové do binární soustavy, který můžeme udělat zrychleným způsobem.
- Využijete toho, že 24 = 16:
3
16 = 00112
D
16 = 11012
E
16 = 11102
4
16 = 01002
0
16 = 00002
- Z uvedeného plyne, že můžeme zadané číslo chápat binárně jako 0011|1101|1110|0100|0000|0000|0000|00002IEEE754_binary32.
2. Rozdělíte si binárně zapsané číslo na tři části (s, e, f): 0|01111011|110010000000000000000002IEEE754_binary32
3. První místo označuje znaménko (v tomto případě kladné) s = 010.
4. Od druhého do devátého místa je umístěn exponent.
- Provedete tedy převod čísla 011110112 z dvojkové do desítkové soustavy dosazením do mocninné řady.
1 × 26 + 1 × 25 + 1 × 24 + 1 × 23 + 1 × 21 + 1 × 20 = 12310.
Exponent je ovšem zobrazen v kódu s posunutou nulou, takže je ještě třeba provést následující úpravu: e = 12310 −12710 = −4.
5. Stejným způsobem převedete dosazením do mocniné řady i fraction:
- Provedete tedy převod čísla 110012 kde mají jednotlivé pozice váhu −1, −2, atd. Nuly, které jsou na konci čísla vpravo, nejsou pro převod důležité, jelikož se nachází v části za řádovou tečkou.
1 × 2−1 + 1 × 2−2 + 1 × 2−5 = 0,7812510.
6. Přičtete k fraction 1, abyste získali hodnotu mantisy m = 1,7812510.
7. Nyní již můžete dosadit do semilogaritmického tvaru a spočítat, že H10 = (−1)0 × (1 + 0,78125) × 2−4 = 0,11132812510.