Pevné číslo bodu

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 14. června 2021; ověření vyžaduje 1 úpravu .

Číslo s pevnou čárkou ( anglicky  fixed-point number ) je formát pro reprezentaci reálného čísla v paměti počítače jako celé číslo . Navíc samotné číslo x a jeho celočíselná reprezentace x′ souvisí vzorcem

,

kde z  je cena (váha) nejméně významné číslice.

V případě, že , je pro usnadnění výpočtů vytvořeno dílčí násobek k jedné, takže celá čísla jsou zakódována bez chyby. Jinými slovy, vybere se celé číslo  u ( strojní jednotka ) a vezme se . V případě , je to celé číslo.

Pokud není vyžadováno, aby byla v bitové mřížce zahrnuta nějaká konkrétní zlomková čísla, programátoři si obvykle vyberou - to umožňuje použití bitových posunů při operacích násobení a dělení . O takové aritmetice říkají: „ f bitů na zlomkovou část, i = n−f  - na celé číslo“ a označují se jako „ i , f “, „ i . f " nebo " Qi.f " (viz formát čísel Q ). Například: aritmetika 8.24 přiřadí 8 bitů celočíselné části a 24 zlomkové části. Podle toho je schopen ukládat čísla od −128 do 128− z s cenou (váhou) nejméně významné číslice .

U úhlových veličin to často dělají (zvláště pokud se goniometrické funkce počítají z tabulky).

Název

Název "pevná čárka" (nebo "pevná čárka"; dále - FZ) pochází z jednoduché metafory: čárka se umístí mezi dvě předem určené číslice , aby se celé číslo změnilo na zlomek. Například z celého čísla 1234 se po vložení čárky stane zlomek 12,34.

Ve Spojeném království, USA a dalších zemích se místo čárky používá tečka k oddělení celé části čísla od zlomkové části, takže pojmy „pevná čárka“ a „pevná čárka“ jsou ekvivalentní.

Aplikace

Aritmetika s pevnou řádovou čárkou se často používá v oblastech, kde jsou čísla s pohyblivou řádovou čárkou drahá nebo nemožná kvůli použité architektuře procesoru. Například video koprocesory PlayStation ( Sony ), Saturn ( Sega ), Game Boy Advance ( Nintendo ), Nintendo DS , GP2X používají aritmetiku s pevným bodem ke zvýšení propustnosti na architekturách bez FPU . Standard OpenGL ES 1.x obsahuje podporu pro čísla s pevnou čárkou, protože je navržen pro vestavěné systémy , které často nemají FPU .

Kromě toho se aritmetika s pevnou řádovou čárkou používá k zajištění minimální podpory pro zlomková čísla na celočíselném procesoru: mikrokontrolér , mobilní telefon , set- top boxy až po Playstation atd. Pokud se nevyřeší nesprávné problémy a SLAE vyššího řádu , často stačí bod - důležité je pouze zvolit pro každou z veličin vhodnou cenu (váhu) nejméně významné číslice.

Čísla s pevnou čárkou se používají tam, kde není potřeba vysoká přesnost, ale je vyžadován výkon. U většiny moderních procesorů není FZ hardwarově implementován, ale i softwarový FZ je velmi rychlý - proto se používá v různých druzích herních enginů, rasterizérů [1] atd. Například engine Doom používá Q16. 16 aritmetika pro měření vzdáleností, pro úhly - 360°=2 32 .

Je také vhodné používat pevnou čárku k zápisu čísel, která mají ze své podstaty konstantní absolutní chybu : souřadnice v programech rozložení , časová razítka , peněžní částky . Například změny v supermarketu i daně v zemi se počítají s přesností na setiny. Metrické soubory písem TeX používají 32bitový typ Q12.20 se znaménkem s pevnou čárkou, knihovna rasterizace písem FreeType  používá Q26.6 [2] . Pro podobné hodnoty lze také použít plovoucí desetinnou čárku s dostatečným počtem znaků mantisy - ale pak se pole objednávky stane nadbytečným. Pevný bod se navíc chová naprosto předvídatelně - při počítání peněz to umožňuje nastavit různé typy zaokrouhlování a ve hrách - nejjednodušší způsob, jak implementovat režim pro více hráčů a zaznamenávat opakování.

Nevýhody

Nevýhodou pevného bodu je velmi úzký rozsah čísel, kdy na jednom konci rozsahu hrozí přetečení a na druhém ztráta přesnosti . Ve složitých výpočtech se musíte neustále vejít do tohoto rozsahu pomocí změny měřítka - pomocí různých formátů pevných bodů pro čas, polohu, rychlost... Tento problém vedl k vynálezu pohyblivé řádové čárky . Například: pokud potřebujete 3 platné číslice s přesností, 4bajtová pevná čárka poskytuje rozsah 6 řádů velikosti (tj. rozdíl přibližně 10 6 mezi největším a nejmenším číslem), 4bajtová jedno- přesné číslo udává  70 řádů.

Implementace

Jen málo programovacích jazyků poskytuje vestavěnou podporu pro čísla s pevnou desetinnou čárkou, protože pro většinu aplikací je binární nebo desítková reprezentace čísel s plovoucí desetinnou čárkou jednodušší a přiměřeně přesná. Čísla s plovoucí desetinnou čárkou jsou jednodušší díky jejich většímu dynamickému rozsahu a nevyžadují předem zadaný počet desetinných míst. Pokud je vyžadována aritmetika s pevnou řádovou čárkou, může ji programátor implementovat v jazyce, který používá.

Čísla s pevnou řádovou čárkou ve formátu BCD se často používají k ukládání peněžních hodnot - nepřesnosti z formátů s pohyblivou řádovou čárkou jsou nepřijatelné a pro jednoduché mikrokontroléry platebních terminálů BCD je výhodnější binární reprezentace. Historicky byla čísla s pevnou desetinnou čárkou často používána pro desetinné datové typy, jako například v PL/I a COBOL . Programovací jazyk Ada 2012 obsahuje vestavěnou podporu pro čísla s pevnou řádovou čárkou (binární i desítková) a čísla s pohyblivou řádovou čárkou. JOVIAL a Coral 66 poskytly oba formáty.

Norma ISO/IEC TR 18037 přidává do jazyka C podporu pro čísla s pevnou řádovou čárkou . Vývojáři kompilátoru GCC již tuto podporu implementovali [3] .

Téměř všechny DBMS a SQL jazyk podporují aritmetiku s pevnou řádovou čárkou a ukládání takových dat. Například PostgreSQL má speciální číselný typ pro ukládání čísel s přesností až 1000 číslic.

Operace

Pokud mají operandy a výsledek jinou hodnotu (váhu) nejméně významné číslice, jsou vzorce složitější - někdy je to však nutné udělat kvůli velkému rozdílu v řádu.

Pro převod čísel z formátu s pevnou řádovou čárkou do formátu čitelného člověkem a naopak se použijí obvyklá pravidla pro převod zlomkových čísel z jedné polohové číselné soustavy do druhé.

Poznámky

  1. Pevná čísla bodů. Aplikace v počítačové grafice
  2. VI. Obrysy FreeType . Staženo: 23. března 2020.
  3. Pevná čísla bodů . Dokumentace GCC