A | B | C | D | E | F | G | H | CH | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
A számítástechnikában a lebegőpontos számábrázolás[1] lehetővé teszi a valós számok kezelését véges tárhely esetében, széles skálát fedvén le a számhalmazon belül. A számok rögzített számú számjegyekkel ábrázolhatóak, és egy kitevő (exponens) segítségével vannak skálázva. A skálázás alapja leggyakrabban 2, 10 vagy 16. A szám a következő alakban adható meg:
- értékes számjegy × alapexponens
A lebegőpontos szám lényege, hogy az ábrázolásánál a tizedesvessző „lebeg”, vagyis az ábrázolható értékes számjegyeken belül bárhova kerülhet. (Példa erre az 1,23, 12,3, 123 számok, melyek mindegyike 3 értékes számjegyet tartalmaz.) Előnye a fixpontos számábrázolással szemben az, hogy sokkal szélesebb tartományban képes értékeket felvenni; a számokat reprezentáló adat mennyisége főként az ábrázolható számjegyek mennyiségét határozza meg, és sokkal kisebb mértékben az ábrázolható számok nagyságrendjét. Számos számábrázolási rendszer létezik a lebegőpontos számok kezelésére, de az elmúlt évtizedben legelterjedtebb az IEEE 754 szabvány lett.
Normalizálás
A tízes számrendszerben felírhatjuk a számokat normalizált formában: a tizedesvesszőt eltoljuk, és a tíznek megfelelő hatványával szorozzuk a számot, hogy a számjegyek a tizedesvesszőtől jobbra helyezkedjenek el, és az első számjegy ne legyen 0. Például:
- 364,7896 = 0,3647896 × 103
- -0,005674 = -0,5674 × 10-2
Egy nem nulla valós szám a következő általános alakban írható fel:
ahol r ≥ 0,1 és r < 1, n pedig egy integer (pozitív, negatív egész szám vagy nulla), amelyet úgy választunk meg, hogy r a megadott intervallumon belül helyezkedjen el.
Kettes számrendszerben is hasonló módon járunk el normalizálás esetén:
Az eltérés ott adódik, hogy kikötjük: az első értékes számjegy 1 legyen, amely a tizedesvesszőtől balra helyezkedjen el. Ebben az esetben q = (1.f)2, és 1 ≤ q ≤ 2. Ez az alak azért előnyös, mert amikor a számjegyeket biteken tároljuk, megspórolhatunk egy bitet, ha nem tároljuk az első egyest, hanem feltételezzük annak jelenlétét.
Felépítés
Ahhoz, hogy megértsük a lebegőpontos számok felépítését, nézzük meg konkrét példaként, miként van ábrázolva egy ilyen szám 32 biten. A szám ábrázolásához három rész szükséges:
- Az x valós szám előjele (szignum): s – 1 bit
- Eltérített exponens (integer): e – 8 bit
- Értékes számjegyek (mantissza): q – 23 bit
Tehát a nem nulla normalizált számítógépes szám bitek sorozata, amelyet a következő módon dekódolnak:
ahol : m = e – 127, illetve q = (1,f)2.
Ebben az esetben 1 ≤ q < 2, melynél a legfontosabb bit az első, amelyik nincs expliciten tárolva. Az s az x szám előjelét adja meg (ha negatív: 1, ha pozitív: 0), m = e – 127 a 8 bites eltérített exponens, és f a 23 bites törtrésze a számnak, amely az első egyessel együtt adja az értékes számjegyeket.
Az e-re való kikötés, miszerint csak 8 biten ábrázolható, korlátozza a számítógépen ábrázolható számok nagyságát:
- 0 < e < (11 111 111) 2 = 28 – 1 = 255
ahol az e = 0 és az e = 255 különleges esetekre vannak fenntartva, mint a ±0, ±∞ és a NaN (Not a Number). Mivel m = e – 127, következésképpen -126 ≤ m ≥ 127, tehát 32 biten a legkisebb szám, amely ábrázolható, 2-126 ≅ 1,2 x 10-38 (ennél kisebb szám esetében underflow hibaüzenetet kapunk), a legnagyobb ábrázolható szám (2–2-23)2127≅ 3,4 x 10 38 (ezen fölül overflow hibaüzenetet kapunk). Ez a tartomány nem minden esetben elégséges, ezért használnak bizonyos esetekben kétszeres helyet is egy számnak (double precision), ahol a mantisszának akár kétszer több bit jut.
Tekintsük példának a következő számítógépes számot:
- 01000001110111001000100000000000
A legelső számjegy nulla, ami azt jelenti, hogy a szám pozitív. A következő 8 bit 10000011, amely adja az eltérített exponenst, a következő decimális számmal egyenértékű:
Következésképpen a szám exponenciális része 2131 – 127 = 24 . Az utolsó 23 bit a mantisszát határozza meg:
Ezek alapján a fenti számítógépes szám pontosan a következő decimális számot ábrázolja:
- e – 127
Nulla, Végtelen, NaN
Az IEEE standard alapján kétféle nulla létezik: +0 és -0, melyeket a következő szavak jelképeznek: 16 és 16. A legtöbb aritmetikai művelet, amelynek eredménye 0, a +0 értéket kapja. A nagyon kis abszolútértékű negatív szám, amely a számítógépnek 0, a -0 értéket kapja.
Ugyanúgy kétféle végtelen van: +∞ és -∞, melyeket a 16 és 16 szavak jelképeznek. Ha szükséges, a végtelent úgy kezelik, mint egy nagyon nagy szám, azaz a következő műveletek érvényesek az x lebegőpontos számmal (0 < x < ∞):
- (+∞) + x = (+∞)
- (+∞) × x = (+∞)
- (+∞) / x = (+∞)
- x / (+∞) = +0
Hasonlóképpen végezhetők a műveletek -∞ -nel is.
A NaN azt jelenti, hogy az érték nem-szám: ami lehet egy határozatlan művelet eredménye, mint a 0/0, ∞ – ∞, x + NaN stb. A NaN ábrázolására van fenntartva az e = 255 és az f ≠ 0.
Kerekítés, kerekítési hiba
A kerekítés, amely elengedhetetlen a számítástechnikában, kétféleképpen történhet:
- Kerekítünk az n+1-edik számjegy alapján: ha ez a számjegy nagyobb, mint 5, felfele kerekítünk, ha kisebb, lefele; ha 5, akkor az n-edik számjegy alapján döntünk (például felfele kerekítünk, ha az páros, és lefele, ha páratlan).
- Levágjuk az n-edik számjegy után az összeset.
Ha az alábbi héttizedes számjegyű számokat négytizedes számra kerekítjük, a következőket kapjuk:
- 0,2375499→0,2375
- 0,9999500→1,0000
- 0,6571708→0,6572
A hiba, ami fellép, ha az eredeti számot annak megközelítésével helyettesítjük, kerekítési hibának nevezzük. Ha x-szel jelöljük az eredeti számot, és x*-gal a kerekítés utáni számot, akkor a kerekítési hiba kerekítés esetén |x-x*| ≤ 0.5 x 10n. Levágás esetén a hibakorlát kétszer nagyobb, azaz |x-x*| ≤ 10n.
Az |x-x*| kifejezést abszolút hibának nevezzük, míg a |x-x*|/|x| kifejezés a relatív hibát adja. A két hiba közül a relatív hiba értékesebb, mivel figyelembe veszi az érték nagyságát.
Ha egy valós x számot ábrázolok lebegőpontos számként 32 biten, akkor a következő kifejezés igaz:
- fl(x)=x(1+δ) , |δ| ≤ 2-24
ahol fl(x) jelöli a lebegőpontos számot, δ a kerekítési hibát.
Jegyzetek
- ↑ Az elnevezés az angolszász irodalomból honosodott meg a magyarba, ahol a számjegyeknél tizedespontot használnak, ellentétben a magyar tizedesvesszővel.
Források
- Richard L. Burden, Douglas Faires: Numerical Analysis, 1.2-es fejezet, Roundoff Errors and Computer Arithmetic, 18-26. old.
- Kincaid, D. – Cheney, W.: Numerical Analysis, Mathematics of Scientific Computing, 2. kiadás (1996), 2. fejezet, Computer Arithmetic, 39-51. old.
A lap szövege Creative Commons Nevezd meg! – Így add tovább! 3.0 licenc alatt van; egyes esetekben más módon is felhasználható. Részletekért lásd a felhasználási feltételeket.
Analóg multiméterek túlterhelés elleni védelme
Egyenáram
Egyenáram mérése
Egyenirányítós lengőtekercses műszer
Elektromágnes (fizika)
Elektromos feszültség
Elektromos térerősség
Fáziseltolódás
Fázismutató
Fajlagos ellenállás
Feszültséggenerátor
Feszültségváltó
Forgó mágneses tér
Háromfázisú hálózat
Hőelektromosság
Hatásos ellenállás
A lap szövege Creative Commons Nevezd meg! – Így add tovább! 3.0 licenc alatt van; egyes esetekben más módon is felhasználható. Részletekért lásd a felhasználási feltételeket.