Ujukomaarv

Allikas: Vikipeedia
Merge-arrow.svg
See artikkel on esitatud liitmiseks artikliga Normaliseeritud ujukomaarv. Lisainfot artikli arutelust

Ujukomaarv või liikuva komaga arv[1] (inglise keeles floating-point number) on andmetüüp, mis on loodud esitamaks väga suuri ja väga väikseid arve, mida oleks ebaotstarbekas esitada täisarvudena.

Ujukomaarv on paigutatav arvuti mällu kolme komponendi, märgi, arvu tüve ehk mantissi ja astendaja ehk eksponendiga.

Ujukomaarvu väärtus avaldub korrutisena kujul[2]:

arvu märk × arvu tüvi × kastendaja

Termin "ujukoma" viitab sellele, et komakoht võib ujuda – seda saab paigutada mantissi suhtes nii paremale kui vasemale.

Lõplikud arvud võivad olla esitatud astmealusel 2 või 10. Iga lõplik arv on kirjeldatud kolme komponendiga: s = märk (0 või 1), c = arvu tüvi, q = astendaja. Lõpliku arvu väärtus on
  (−1)s × c × bq
kus b astmealus (2 või 10).

Kahend-ujukomaarvud[muuda | redigeeri lähteteksti]

Standardi IEEE 754 järgi esitatakse kahend-ujukomaarv kujul

(-1)s*(1.+M)*2E-Bias, kus M on arvu tüve ehk mantissi murdosa (fractional part)[3]. Arvuti mälus säilitatakse murdosa M, mitte tüvi (significand).

Arvu varjatud tüvenumber[muuda | redigeeri lähteteksti]

Töötades kahendarvudega on arvu tüvel alati kindel arv bitte. Kuna normaliseeritud arvu kõige suurema kohakaaluga bitt on alati 1, siis seda arvuti mällu ei salvestata ja nimetatakse varjatud bitiks (hidden bit). Kontekstist sõltuvalt võib varjatud bitti võib arvu tüve hulka mitte arvestada. Näiteks IEEE 754 topelttäpsusega (double precision) vorming on tavaliselt 53-bitilise tüvega, millesse on arvestatud ka "varjatud bitt" või 52-bitilise tüvega, millesse ei ole arvestatud "varjatud bitti". Varjatud biti (hidden bit) mõiste kehtib ainult arvu kahendkujule. IEEE 745 määrab täpsuse p, mis peab olema kirjeldatud teatud arvu tüvenumbritega, kaasaarvatud tähenduseta järgnevad bitid (st. topelttäpsusega ujukomaarvu puhul p=53).

Väga nullilähedasi arve, mille puhul on vajalik nullist erinev varjatud bitt (hidden bit) kutsutakse "denormaliseeritud arvudeks" (Denormal number) või IEEE 745 järgi "subnormal number" [4] [5]. Lahenduseks on arvu Bias [6] mahalahutamine astmenäitajast sõltuvalt esitatavast arvust.

Kümnend-ujukomaaarvud[muuda | redigeeri lähteteksti]

Kümnendarve saab esitada täpselt kümnend-ujukomaarvudega. Näiteks arvudel 1,1 või 2,2 pole täpset vastet kahend-ujukomaarvudena. Lõppkasutaja ei soovi, et 1,1 + 2,2 annaks tulemuseks 3,3000000000000003 nagu kahend-ujukomaarvude puhul. Seetõttu kasutatakse mitmete programmeerimiskeelte interpretaatorites (Python[7], Java) ja ka mõnedes protsessorkiipides (näiteks IBM POWER6) kümnend-ujukomaarve (astmealusel 10)[8].

Vaata ka[muuda | redigeeri lähteteksti]

Välislingid[muuda | redigeeri lähteteksti]

Viited[muuda | redigeeri lähteteksti]

  1. Digitaalseadmete aritmeetika ja loogika I. Ariste,A.; Loengukonspekt, Tallinna Polütehniline Instituut, Informatsioonitehnika kateeder, 95lk, TPI rotaprint, Tallinn, 1971
  2. http://www.artima.com/underthehood/floating.html
  3. fourier.eng.hmc.edu/e85/lectures/arithmetic_html/node11.html
  4. vt. en.wikipedia.org/wiki/Denormal_number
  5. pages.cs.wisc.edu/~cs354-1/beyond354/reps.flpt.html musicdsp.org/files/denormal.pdf
  6. en.wikipedia.org/wiki/Exponent_bias
  7. docs.python.org/library/decimal.html
  8. http://en.wikipedia.org/wiki/Decimal_floating_point