JustPaste.it

Jak policzyć heksadecymalną liczbę zmiennoprzecinkową w formacie IEEE 754

     Norma IEEE 754 jest odgórnie narzuconym i ogólnie przyjętym sposobem reprezentacji liczb zmiennoprzecinkowych w komputerze. O ile teoria jest dość niezrozumiała dla laika, to na podstawie analogii można szybko nauczyć się konwersji na system dziesiętny z uwzględnieniem jej założeń.

Wzór na liczbę pojedynczej precyzji (32 bity) zgodną z normą :

A = (-1)^z * m * 2^(bias-p), gdzie

A-liczba

z-znak

m-mantysa(reprezentowana jest tylko część ułamkowa liczby, czyli 1. jest obcinane i uważane za domyślne. Dzięki takiej operacji zyskuje się dodatkowe dwa bity na dokładność).

bias-cecha

p-polaryzator

Przykład.

Liczba L = 44618000 H

Każdej cyfrze liczby szesnastkowej odpowiadaja liczba czterocyfrowa systemu dwójkowego. Przedstawiamy L binarnie :

L = 0100 0100 0110 0001 1000 0000 0000 0000

Z = 0 (pierwszy bit)

C = 100 0100 0 (kolejnych 8 bitów) = 136 -> bias ;

p = 1111111 = 127

bias-p = 9

M = 110 0001 1000 0000 0000 0000 => reprezentuje część ułamkową, w domyśle zawsze jest 1.M, czyli zapisujemy

1.110 0001 1000 0000 0000 0000 => 1(11000011/10000000), co w systemie dziesiętnym wygląda tak : 1.7617185 {lub zwykłymi 1(195/256)}

Podstawiamy wszystko do wzoru

A = (-1)^z * m * 2^(bias-p) = -1^0 * 1.7617185 * 2 ^ 9 = 902. Tyle wynosi nasza liczba.