Fix pontszám

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. június 14-én felülvizsgált verziótól ; az ellenőrzéshez 1 szerkesztés szükséges .

A fixpontos szám ( angolul  fix-point number ) egy olyan formátum, amely a számítógép memóriájában lévő valós számokat egész számként ábrázolja . Sőt, magát az x számot és az x′ egész számot a képlet kapcsolja össze

,

ahol z  a legkisebb jelentőségű számjegy ára (súlya).

Abban az esetben , ha a számítások kényelmét szolgálja, az egy rész többszörösét képezi, így az egész számok hiba nélkül kerülnek kódolásra. Más szavakkal, kiválasztunk egy  u egész számot ( gépegység ), és felveszünk . Abban az esetben, ha ez egész szám.

Ha nem szükséges, hogy bizonyos törtszámok szerepeljenek a bitrácsban, a programozók általában választanak - ez lehetővé teszi a biteltolások használatát a szorzási és osztási műveletekben . Az ilyen aritmetikáról azt mondják: „ f bit törtrészenként, i = n-f - egész számonként”, és „ i , f ”, „ i ”  -ként jelölik . f " vagy " Qi.f " (lásd: Q számformátum ). Például: az aritmetika 8.24 8 bitet rendel az egész részhez és 24 bitet a tört részhez. Ennek megfelelően –128 és 128− z közötti számokat képes tárolni a legkisebb jelentőségű számjegy árával (súlyával) .

Szögmennyiségek esetén gyakran megteszik (főleg, ha a trigonometrikus függvényeket táblázatból számolják).

Cím

A "fix vessző" (vagy "fix pont"; a továbbiakban - FZ) elnevezés egy egyszerű metaforából származik: egy vesszőt két előre meghatározott számjegy közé helyeznek , hogy egy egész számot törtté alakítsanak. Például az 1234 egész szám vessző beszúrása után tört 12,34 lesz.

Az Egyesült Királyságban, az Egyesült Államokban és más országokban vessző helyett pontot használnak a szám egész részének elválasztására a tört résztől, így a "fix pont" és a "rögzített vessző" fogalma egyenértékű.

Alkalmazás

A fixpontos aritmetikát gyakran használják olyan területeken, ahol a lebegőpontos számok drágák vagy lehetetlenek a használt processzorarchitektúra miatt. Például a PlayStation ( Sony ), a Saturn ( Sega ), a Game Boy Advance ( Nintendo ), a Nintendo DS , a GP2X videó társprocesszorai fixpontos aritmetikát használnak az átviteli sebesség növelésére a nem FPU architektúrákon . Az OpenGL ES 1.x szabvány támogatja a fixpontos számokat, mivel olyan beágyazott rendszerekhez készült , amelyek gyakran nem rendelkeznek FPU -val .

Ezenkívül a fixpontos aritmetika minimális támogatást biztosít a tört számokhoz egy egész processzoron: mikrokontroller , mobiltelefon , set- top boxok Playstation - ig stb. Ha a hibás problémák és a magas szintű SLAE nem oldódnak meg, egy fix pont elég gyakran - csak az a fontos, hogy minden mennyiséghez a legkisebb jelentőségű számjegy megfelelő árat (súlyát) válasszuk.

A fixpontos számokat ott használják, ahol nincs szükség nagy pontosságra, de teljesítményre. A legtöbb modern processzorban az FZ nincs hardveresen implementálva, de még az FZ szoftver is nagyon gyors – ezért különféle játékmotorokban, raszterezőkben [1] stb. használják. Például a Doom motor Q16-ot használ. 16 aritmetika a távolságok mérésére, szögeknél - 360°=2 32 .

Az is kényelmes, ha rögzített vesszőt használunk olyan számok írásához, amelyek természetüknél fogva állandó abszolút hibával rendelkeznek : koordináták az elrendezési programokban , időbélyegek , pénzösszegek . Például egy szupermarketben a változást és egy országban az adókat is százados pontossággal számítják ki. A TeX font metrika fájlok a 32 bites fixpont aláírt Q12.20 típust, a FreeType font raszterizációs könyvtár  a Q26.6-ot [2] használják . A megfelelő számú mantissza jellel rendelkező lebegőpont is használható hasonló értékekhez - de ekkor a rendelési mező feleslegessé válik. Ezenkívül a fix pont teljesen kiszámíthatóan viselkedik - a pénz számlálásakor ez lehetővé teszi a különböző típusú kerekítések beállítását , a játékokban pedig - ez a legegyszerűbb módja a többjátékos mód megvalósításának és a visszajátszások rögzítésének.

Hátrányok

A fix pont hátránya a nagyon szűk számtartomány, a tartomány egyik végén túlcsordulás , a másik végén pedig a pontosság elvesztésének veszélye . Összetett számításoknál folyamatosan ebbe a tartományba kell beilleszkedni újraskálázással – különböző fixpont-formátumokat használva időre, pozícióra, sebességre... Ez a probléma vezetett a lebegőpont feltalálásához . Például: ha 3 jelentős pontosságú számjegyre van szüksége, egy 4 bájtos fix pont 6 nagyságrendű tartományt ad (azaz körülbelül 10 6 különbséget a legnagyobb és legkisebb szám között), egy 4 bájtos egy- pontossági szám  70 nagyságrendet ad.

Megvalósítások

Kevés programozási nyelv nyújt beépített támogatást a fixpontos számokhoz, mivel a legtöbb alkalmazásnál a lebegőpontos számok bináris vagy decimális ábrázolása egyszerűbb és ésszerűen pontos. A lebegőpontos számok nagyobb dinamikatartományuk miatt egyszerűbbek, és nem szükséges előre megadni a tizedesjegyek számát. Ha fixpontos aritmetika szükséges, azt a programozó megvalósíthatja az általa használt nyelven.

A BCD formátumú fixpontos számokat gyakran használják pénzértékek tárolására - a lebegőpontos formátumokból származó pontatlanságok elfogadhatatlanok, és a BCD fizetési terminálok egyszerű mikrovezérlőinél a bináris megjelenítés előnyösebb. Történelmileg a fixpontos számokat gyakran használták decimális adattípusokhoz, például a PL/I -ben és a COBOL -ban . Az Ada 2012 programozási nyelv beépített támogatást tartalmaz a fixpontos számokhoz (bináris és decimális) és a lebegőpontos számokhoz. A JOVIAL és a Coral 66 mindkét formátumot biztosította.

Az ISO/IEC TR 18037 szabvány a fixpontos számok támogatását adja a C nyelvhez . A GCC fordító fejlesztői már megvalósították [3] ezt a támogatást.

Szinte az összes DBMS és SQL nyelv támogatja a fixpontos aritmetikát és az ilyen adatok tárolását. Például a PostgreSQL -nek van egy speciális numerikus típusa a számok pontos tárolására 1000 számjegyig.

Műveletek

Ha az operandusok és az eredmény eltérő értéke (súlya) a legkisebb szignifikáns számjegynek, akkor a képletek bonyolultabbak - de néha ezt meg kell tenni a nagy nagyságrendi különbség miatt.

A számok fixpontos formátumból ember által olvasható formátumba konvertálásához és fordítva, a törtszámok egyik helyzeti számrendszerből a másikba való konvertálására vonatkozó szokásos szabályokat kell alkalmazni.

Jegyzetek

  1. Fix pontszámok. Alkalmazás a számítógépes grafikában
  2. VI. FreeType körvonalai . Letöltve: 2020. március 23.
  3. Fixpontszámok . GCC dokumentáció