Čí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 "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í.
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ý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ů.
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.
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é.
Typy dat | |
---|---|
Neinterpretovatelné | |
Numerický | |
Text | |
Odkaz | |
Kompozitní | |
abstraktní | |
jiný | |
související témata |