8-bit Floating Point

Floating Point 8-bit Floating Point 32-bit Floating Point 64-bit Floating Point

Op sommige systemen, bijvoorbeeld embedded systemen is de geheugenruimte te beperkt of is een grotere nauwkeurigheid niet vereist. In dat geval gebruikt men soms het 8-bit floating point systeem. Om te het uiteindelijke floating point getal te komen, moet je eerst de mantisse normaliseren tot een fractie en de exponent herleiden met een exces 7.

Binaire voorstelling 8-bit floating point getal

1 1111 111
Sign Exponent + 7 Fractie

 

Conversie naar een 8-bit binair floating point getal

-0,068675 x 102 = -0,68675 x 101 = -6,687510 = -66,875 x 10-1 = -668,75 x 10-2

Omrekening geheel deel en rationeel gedeelte

Deel voor komma Rest Deel na komma > 0
6 110   0,6875  
6 / 2 = 3 0 0,6875 x 2 = 1,375 1
3 / 2 = 1,5 1 0,375 x 2 = 0,75 0
1 / 2 = 0,5 1 0,75 x 2 = 1,5 1
0   0,5 x 2 = 1 1
    0  

610 = 1102    ,    0,687510  = 0,11012

* Je leest de cijfers uit de tabel van onder naar boven (onderste cijfer is MSB, bovenste cijfer is LSB)

Let op!

Bij een binaire komma notatie moet je rekening houden met het volgende:

Deel voor de komma

  Deel na de komma

-110

, 1101
eerste nullen mag je schrappen   eerste nullen mag je niet schrappen
laatste nullen mag je niet schrappen   laatste nullen mag je schrappen

-0

, 001101

Nu we onze binaire notatie  -110,1101 hebben kunnen we beginnen met het converteren naar een floating point getal. Hiervoor moet eerst je mantisse gaan normaliseren. Om tot je fractie (genormaliseerde mantisse) te komen, moet je de komma zover naar links opschuiven totdat er nog maar één enkele '1' voor de komma staat

-1,1011012 x 2102 = -11,011012 x 2101 = -110,11012 x 102-0 = -1101,1012 x 210-1

1 1001 101
Sign Exponent + 7 Fractie

Samenvatting 8-bit floating point conversie

Decimaal -6,6875 x 100
Binair -110,1101 x 20
Binair genormaliseerd -1,101101 x 22
   
Sign 1
Exponent 10
Exponent in exces 7 1001
Fractie 101
   
8-bit floating point 1 1001 101

Afrondingsfouten

Je ziet hier duidelijk de afrondingsfout omdat we de laatste drie bits van de fractie hebben moeten laten vallen door gebrek aan adresruimte. Als men dit terugrekent krijgt men:

1,10012 x 22 = 110,012 = 6,2510