Articles

lebegőpontos számok

miért van szükség lebegőpontos számokra

mivel a számítógép memóriája korlátozott, nem tárolhat végtelen pontossággal számokat, függetlenül attól, hogy bináris törteket vagy tizedeseket használ-e: egy bizonyos ponton le kell vágnia. De mennyi pontosságra van szükség? És hol van rá szükség? Hány egész számjegy és hány tört számjegy?

  • egy autópályát építő mérnöknek nem számít, hogy 10 méter vagy 10.0001 méter széles-méréseik valószínűleg nem olyan pontosak.
  • valakinek, aki mikrochipet tervez, 0,0001 méter (egy tized milliméter) hatalmas különbség – de soha nem kell 0,1 méternél nagyobb távolsággal foglalkozniuk.
  • egy fizikusnak a fénysebességet (kb. 300000000) és Newton gravitációs állandóját (kb.

a mérnöknek és a chip tervezőnek való megfeleléshez egy számformátumnak pontosságot kell biztosítania a számok számára nagyon különböző nagyságoknál. Azonban csak relatív pontosságra van szükség. A fizikus kielégítéséhez lehetővé kell tenni olyan számításokat, amelyek különböző nagyságú számokat tartalmaznak.

alapvetően nem hasznos egy fix számú egész szám és tört számjegy-a megoldás pedig egy lebegőpontos formátum.

hogyan lebegőpontos számok munka

az ötlet az, hogy össze számos két fő részből áll:

  • a significand, amely tartalmazza a szám számjegyeit. A negatív significands negatív számokat jelent.
  • egy exponens, amely azt mondja, ahol a decimális (vagy bináris) pont kerül képest az elején a significand. A negatív exponensek olyan számokat képviselnek, amelyek nagyon kicsiek (azaz közel nulla).

az Ilyen formátum megfelel a követelményeknek:

  • jelenthet számok vadul különböző nagyságrendű (korlátozott hossza a exponens)
  • Ez biztosítja az azonos relatív pontosság egyáltalán nagyságrendű (korlátozott hossza a significand)
  • lehetővé teszi, Hogy a számítások egész shapley: egy nagyon nagy és egy nagyon kis szám szorzata megőrzi mind az eredmény pontosságát.

a decimális lebegőpontos számok általában tudományos jelölés formájában jelennek meg, anexplicit ponttal mindig az 1.és 2. számjegy között. Az exponens kifejezetten meg van írva, beleértve az alapot is, vagy egy e-t használnakkülön a significand-tól.

A standard

szinte minden hardver és programozási nyelv azonos bináris formátumban használ lebegőpontos számokat, amelyeket az IEEE 754 szabvány határoz meg. A szokásos formátumok 32 vagy 64 bit teljes hosszúak:

Format Total bits Significand bits Exponent bits Smallest number Largest number
Single precision 32 23 + 1 sign 8 ca. 1.2 ⋅ 10-38 ca. 3.4 ⋅ 1038
Double precision 64 52 + 1 sign 11 ca. 2.2 ⋅ 10-308 ca. 1.8 ⋅ 10308

vegye figyelembe, hogy vannak bizonyos sajátosságok:

  • a tényleges bitsorozat a jelbit első, majd az exponens és végül a significand bit.
  • az exponensnek nincs jele; ehelyett egy exponens torzítást vonnak le belőle (127 az egyeshez, 1023 pedig a kettős pontossághoz). Ez és a bitsorozat lehetővé teszi a lebegőpontos számok összehasonlítását és helyes rendezését akkor is, ha egész számként értelmezzük őket.
  • a significand legjelentősebb számjegyét kihagyják, és azt feltételezik, hogy 1, kivéve az all-0 exponenssel jelölt szubnormális számokat, amelyek a fenti táblázatban megadott legkisebb számokon túlmutatnak, a pontosság költségén.
  • vannak külön pozitív és negatív nulla értékek, amelyek a jel bitben különböznek, ahol az összes többi bit 0. Ezeket egyenlőnek kell tekinteni, annak ellenére, hogy bitmintáik eltérőek.
  • vannak speciális pozitív és negatív végtelen értékek, ahol az exponens mind 1 bit, a significand pedig mind 0 bit. Ezek a számítások eredményei, ahol az exponens pozitív tartományát túllépik, vagy egy szabályos szám nullával történő felosztása.
  • vannak speciális nem egy szám (vagy NaN) értékek, ahol az exponens mind 1-bit, és a significand nem minden 0-bit. Ezek különböző meghatározatlan számítások eredményét jelentik (mint például a 0 és a végtelen szorzása, bármilyen Nan-értéket érintő számítás vagy alkalmazásspecifikus esetek). Még a bit-azonos NaN értékeket sem szabad egyenlőnek tekinteni.

Ha ez túl elvontnak tűnik, és szeretné látni, hogy egyes konkrét értékek hogyan néznek ki az IEE 754-ben, próbálja ki az úszó játékot, vagy az IEEE 754 vizualizációt, vagy Float Exposed.