Signaalinkäsittelytekniikan laboratorio
Digitaalitekniikan perusteet

Luennot
 Sivukartta  
Sanasto
Laskuharjoitukset

Liukuvan pilkun luvuista

Liukuvan pilkun lukujen käytön perusteita:

  • kiinteän pilkun esityksessä käytössä suppea lukualue. Esim. 7:llä bitillä 0-128.
    (Esityspituuden lisääminen epäkannattavaa: yhden bitin lisääminen vain kaksinkertaistaa lukualueen)
  • Lisäksi jos kiinteän pilkun esityksessä kasvatetaan lukualuetta, kasvattaa se myös esitystarkkuutta, mikä on usein tarpeetonta
  • liukuvan pilkun esitystavalla saadaan yleensä riittävän suuria lukuja 32 bitillä
  • esityspituuden lisääminen yhdellä bitillä kasvattaa lukualuetta eksponentiaalisesti

Liukuvan pilkun luku vastaa siis desimaalijärjestelmän ilmaisua 10 eksponentteina.
(Esim. 0,5235 × 1012, 2,24 × 10-7, -1.3 × 1030)

Liukuvan pilkun luku jakaantuu kolmeen osaan:
Eniten merkitsevä bitti on merkkibitti (sign, s).
Tämän jälkeen seuraa joukko eksponenttibittejä (exponent, e).
Lopuksi tulee mantissa. (fraction, f)
Lisäksi liukulukuun liittyy siirre (bias, b)

Esimerkki IEEE-standardin mukaisesta liukuluvusta:
kahvia

Luku = (-1)s × 2e-b × 1.f
(mantissa on siis ykköstä pienempi luku, bitit tulkitaan kakkosen negatiivisina potensseina s.e. eniten merkitsevän kerroin on 2-1, seuraavan 2-2 jne..)

Muistettavaa:

  • Eksponentti esitetään aina siirretyssä eli biasoidussa muodossa. Tässä on kyse siitä, ettei eksponentilla ole omaa merkkibittiä, joten se on periaatteessa aina positiivinen. Koska kuitenkin halutaan pystyä esittämään sekä negatiivisia että positiivisia eksponentteja (pieniä ja suuria lukuja varten), siirretään lukualuetta vasemmalle. Lukualue siirretään siten että sen keskipiste on nollassa (tai sen vieressä, tasan siirto ei mene). (Biasointi tulee esiin 2. laskuharjoituksessa. Ks. myös esimerkit)
  • Mantissa esitetään yleensä itseisarvomuodssa.
  • Jollei ole erityistä syytä, luvut esitetään aina normaalimuodossa.
  • Tarvittaessa luku skaalataan normaalimuotoon eksponenttia muuttamalla.
  • Normaalimuodossa luvulla on suurin mahdollinen esitystarkkuus.
  • Mantissa on normaalimuotoinen, mikäli mantissa alkaa ykkösellä.

Esimerkki 1 Tulkitse binääriluku (1001 1000 0101 0100)2 liukuvan pilkun lukuna.
Tässä tehtävässä ensimmäinen bitti on merkkibitti, eksponentti esitetään viidellä bitillä ja loput 10 kuuluvat mantissaan, joten esitys ei ole IEEE-standardin mukainen

Edetään tehtävässä seuraavasti:

  • Katsotaan ensin mikä on tulevan luvun merkki (onko luku positiivinen vai negatiivinen).
    Koska merkkibitti (s) on 1, luku on negatiivinen
  • Tämän jälkeen tulkitaan eksponentti, eli seuraavat 5 bittiä muutetaan 10-järjestelmään, kuten on opittu aiemmin.

    001102 = 610

  • Koska halutaan sekä positiiviset, että negatiiviset eksponentit käytämme siirrettä (bias).
    Siirteen suuruus on puolet koko lukualueen määrästä, joka eksponentilla voidaan esittää. Tässä tapauksessa eksponentti on 5 bittiä pitkä eli sillä voidaan esittää 25 = 32 erilaista lukua. Siirteen keskipiste on nollan vieressä (koska lukualue ei mene tasan) jolloin voidaan esittää eksponentit välillä -15 --> 16. Ts. siirre on 15

  • Eksponentin (e) ollessa 610 ja siirteen (b) 1510 on e-b=-910
  • Loput 10 bittiä kuuluvat mantissaan ja niiden muuntaminen 10-järjestelmään tapahtuu helposti
    00010101002 = 0 × 2-1 + 0 × 2-2 + 0 × 2-3 + 1 × 2-4 + 0 × 2-5 + 1 × 2-6 + 0 × 2-7 + 1 × 2-8 = 0,0625 + 0,015625 + 0,00390625 = 0,08203125

  • Lopuksi saamme siis liukuluvuksi: (-1)1 × 26-15 × 1.0820312
    = 0,00211334210
Esimerkki 2 Tulkitse binääriluku (0101 1000 0111 1000)2 liukuvan pilkun lukuna.
Ensimmäinen bitti on merkkibitti, eksponentti esitetään viidellä bitillä ja loput 10 kuuluvat mantissaan

Edetään tehtävässä seuraavasti:
  • Katsotaan ensin mikä on tulevan luvun merkki (onko luku positiivinen vai negatiivinen).
    Koska merkkibitti (s) on 0, luku on positiivinen
  • Tämän jälkeen tulkitaan eksponentti, eli seuraavat 5 bittiä muutetaan 10-järjestelmään, kuten on opittu aiemmin.

    101102 = 2210

  • Koska halutaan sekä positiiviset, että negatiiviset eksponentit käytämme siirrettä (bias).
    Siirteen suuruus on puolet koko lukualueen määrästä, joka eksponentilla voidaan esittää. Tässä tapauksessa eksponentti on 5 bittiä pitkä eli sillä voidaan esittää 25 = 32 erilaista lukua. Siirteen keskipiste on nollan vieressä (koska lukualue ei mene tasan) jolloin voidaan esittää eksponentit välillä -15 --> 16. Ts. siirre on 15

  • Eksponentin (e) ollessa 2210 ja siirteen (b) 1510 on e-b=710
  • Loput 10 bittiä kuuluvat mantissaan ja niiden muuntaminen 10-järjestelmään tapahtuu helposti
    00011110002 = 1 × 2-4 + 1 × 2-5 + 1 × 2-6 + 1 × 2-7 = 0,0625 + 0,03125 + 0,015625 + 0,0078125 = 0,1171875

  • Lopuksi saamme siis liukuluvuksi: (-1)0 × 222-15 × 1.1171875
    = 14310

Lyhyesti liukuvan pilkun luvun laskutoimituksista (esitetään yleissivistyksen vuoksi)
Yhteen- ja vähennyslasku

  • luvuista pienempi muutetaan normaalimuodosta muotoon, jossa lukujen eksponentit ovat samat
  • mantissoilla tehdään tarvittava laskutoimitus
  • eksponentiksi tulee yhteinen eksponentti
  • lopuksi normalisoidaan, mikäli se on tarpeen

Kerto- ja jakolasku

  • mantissoilla tehdään tarvittava laskutoimitus
  • kertolaskussa eksponentit lasketaan yhteen ja summasta vähennetään siirre
  • jakolaskussa jaettavan eksponentista vähennetään jakajan eksponentti ja erotukseen lisätään siirre
  • lopuksi normalisoidaan, mikäli se on tarpeen

Liukuvan pilkun lukuja käsittelee ANSI/IEEE:n standardi 754-1985. Standardi on laaja ja yksityiskohtainen ja se määritelee esitystavat ja laskutoimitukset. Standardi on laadittu mikrotietokoneita varten. Se sisältää kaksi perusesitystapaa:

  • yksinkertainen esitystarkkuus (single precision): 32 bittiä
  • kaksinkertainen esitystarkkuus (double precision): 64 bittiä

Lisätietoja:


Tämän sivun sisällöstä vastaa aura@wooster.hut.fi
URL: http://signal.hut.fi/digis/luento2/liukuva.html
Sivua on viimeksi päivitetty 18.10.2004.