Przykład konwersji liczby dziesiętnej do postaci binarnej 32-bitowej (short real), zgodnej z normą IEEE754: 1. Liczba L = 30.55

2. Konwersja 10→2 części całkowitej: 3010 = 111102.

30 : 2 =

15 reszty 0

15 : 2 =

7

reszty 1

7 : 2 =

3

reszty 1

3 : 2 =

1

reszty 1

1 : 2 =

0

reszty 1

3. Konwersja 10→2 części ułamkowej: 0.5510 = 0.1000110011001100112

Uwaga: na potrzeby zadania zakładam zachowanie dokładności do 0.00110 czyli co najmniej dziesięć cyfr dwójkowych. Naprawdę na mantysę w formacie 32-bitowym ZMP przeznaczamy 23 bity, ale być może uzyskamy jeszcze kilka bitów mantysy na etapie normalizacji z przekształcania części całkowitej.

0.55 * 2 = 1.10

0.10 * 2 = 0.20

0.20 * 2 = 0.40

0.40 * 2 = 0.80

0.80 * 2 = 1.60

0.60 * 2 = 1.20

0.20 * 2 = 0.40

0.40 * 2 = 0.80

0.80 * 2 = 1.60

0.60 * 2 = 1.20

0.20

*

2

=

0.40

4. Podsumowując rezultaty z punktów 2 i 3, otrzymujemy 30.5510 = 11110.1000(1100)2

Znak (1b) Wykładnik (8b) Mantysa (23b) 31 30 ... 23

22 ... 0

Należy teraz wytworzyć wartości poszczególnych pól formatu: Znak = 0 bo liczba L jest dodatnia Wykładnik i mantysa zostaną obliczone po normalizacji.

5. Normalizacja ( 1 ≤ Ln < 2 ) 11110.10001100(1100)2 * 20 = 1.1110 1000 1100 1100 ... 2 * 24

Wykładnik rzeczywisty liczby exp = 4.

Wykładnik spolaryzowany exp spol = 4 + 127 = 131.

Kod dwójkowy wykładnika spolaryzowanego to 100000112 (128+2+1).

6. Mantysaznormalizowana mn to

mn = 1.1110 1000 1100 1100 ...

Usuwamy domyślną jedynkę ( 1.xxx ), tworząc mantysę maszynową m m = 1110 1000 1100 1100 1100 110

7. Rezultat konwersji:

L = 30.5510 =

0 10000011 1110 1000 1100 1100 1100 110

Czyli korzystając z zapisu szesnastkowego:

L = 30.5510 = 0100 0001 1111 0100 0110 0110 0110 0110 2 ZMP =

= 41F4 5555H ZMP

8. Po konwersji 2→10 otrzymujemy

P = 01000001111101000110011001100110 2 =

3.05499992370605E+0001 = 30.5499992370605 ≠ 30.55

2

Przykład konwersji liczby binarnej 32-bitowej (short real), zgodnej z normą IEEE754 do postaci dziesiętnej: 1. R = 001111111010000000000000000000002

2. Rozbicie liczby R na poszczególne pola

0 01111111 01000000000000000000000

Znak = 0

Wykładnik spolaryzowany expspol = 011111112 =

64+32+16+8+4+2+1=127.

A wobec tego wykładnik rzeczywisty liczby exp = expspol – 127 =

127 – 127 = 0.

Mantysa maszynowa ( bez ukrytej jedynki)

m = 010000000000000000000002

Po odtworzeniu ukrytej jedynki otrzymujemy mantysę znormalizowaną:

mn = 1010000000000000000000002

3. Co pozwala na odtworzenie wartości liczby po konwersji dwójkowo-dziesiętnej:

L = (-1)Znak * m * 2 exp = 1 * 1.010 * 20 = 1.0102 = 1.2510

3