Formát čísla počítače - Computer number format
![]() | tento článek potřebuje další citace pro ověření.Červen 2020) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
A formát čísla počítače je interní reprezentace číselných hodnot v hardwaru a softwaru digitálního zařízení, například v programovatelných počítače a kalkulačky.[1] Číselné hodnoty jsou uloženy jako seskupení bity, jako bajtů a slova. Kódování mezi číselnými hodnotami a bitovými vzory je zvoleno pro usnadnění provozu počítače;[Citace je zapotřebí ] kódování používané sadou instrukcí počítače obecně vyžaduje převod pro externí použití, například pro tisk a zobrazení. Různé typy procesorů mohou mít různé interní reprezentace číselných hodnot a pro celočíselná a reálná čísla se používají různé konvence. Většina výpočtů se provádí s číselnými formáty, které se vejdou do registru procesoru, ale některé softwarové systémy umožňují reprezentaci libovolně velkých čísel pomocí více slov paměti.
Reprezentace binárního čísla
Počítače představují data v sadách binárních číslic. Reprezentace se skládá z bitů, které jsou zase seskupeny do větších sad, jako jsou bajty.
Binární řetězec | Osmičková hodnota |
---|---|
000 | 0 |
001 | 1 |
010 | 2 |
011 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
Délka bitového řetězce (b) | Počet možných hodnot (N) |
---|---|
1 | 2 |
2 | 4 |
3 | 8 |
4 | 16 |
5 | 32 |
6 | 64 |
7 | 128 |
8 | 256 |
9 | 512 |
10 | 1024 |
... | |
A bit je binární číslice což představuje jednu ze dvou státy. Pojem bit lze chápat jako hodnotu buď 1 nebo 0, na nebo vypnuto, Ano nebo Ne, skutečný nebo Nepravdivénebo kódovaný přepínačem nebo přepnout nějakého druhu.
Zatímco jediný bit je sám o sobě schopen představovat pouze dvě hodnoty, a řetězec bitů lze použít k reprezentaci větších hodnot. Například řetězec tří bitů může představovat až osm různých hodnot, jak je znázorněno v tabulce 1.
Jak se zvyšuje počet bitů tvořících řetězec, počet možných 0 a 1 kombinace se zvyšuje exponenciálně. Zatímco jediný bit umožňuje pouze dvě kombinace hodnot a dva bity dohromady mohou vytvořit čtyři samostatné hodnoty atd. Počet možných kombinací se zdvojnásobuje s každou přidanou binární číslicí, jak je znázorněno v tabulce 2.
Seskupení se specifickým počtem bitů se používají k reprezentaci různých věcí a mají konkrétní názvy.
A byte je bitový řetězec obsahující počet bitů potřebných k reprezentaci a charakter. Na většině moderních počítačů se jedná o osmibitový řetězec. Protože definice bajtu souvisí s počtem bitů tvořících znak, některé starší počítače používaly pro svůj bajt jinou délku bitu.[2] V mnoha počítačové architektury, bajt je nejmenší adresovatelná jednotka, atom adresovatelnosti, řekněme. Například i když 64bitové procesory mohou adresovat paměť šedesát čtyři bitů najednou, mohou tuto paměť stále rozdělit na osmibitové kousky. Tomu se říká byte-adresovatelná paměť. Historicky mnoho CPU číst data v několika násobcích osmi bitů.[3] Protože velikost bajtu osmi bitů je tak běžná, ale definice není standardizovaná, termín oktet se někdy používá k explicitnímu popisu osmibitové sekvence.
A okusovat (někdy nybble), je číslo složené ze čtyř bitů.[4] Být a půl bajtu, křupka byla pojmenována jako slovní hra. Člověk může potřebovat několik kousnutí na jedno sousto z něčeho; podobně je nybble součástí bajtu. Protože čtyři bity umožňují šestnáct hodnot, je nibble někdy známý jako a hexadecimální číslice.[5]
Osmičkové a šestnáctkové číslo
Osmičkový a hexadecimální kódování jsou pohodlné způsoby, jak reprezentovat binární čísla, jak je používají počítače. Počítačoví inženýři často potřebují zapisovat binární veličiny, ale v praxi je odpis binárního čísla jako 1001001101010001 zdlouhavý a náchylný k chybám. Proto jsou binární veličiny zapsány v základu-8 nebo „osmičkovém“, nebo mnohem častěji v základu-16, „hexadecimálním“ (hex), číselný formát. V desítkové soustavě je 10 číslic, 0 až 9, které se kombinují a tvoří čísla. V osmičkové soustavě je pouze 8 číslic od 0 do 7. To znamená, že hodnota osmičkové „10“ je stejná jako desetinná „8“, osmičková „20“ je desítková „16“, a tak na. V hexadecimálním systému je 16 číslic, 0 až 9 následovaných konvencí, s A až F. To znamená, že hexadecimální číslo „10“ je stejné jako desetinné číslo „16“ a hexadecimální číslo „20“ je stejné jako desetinné číslo „32“. Příklad a srovnání čísel v různých základnách je popsáno v tabulce níže.
Při psaní čísel se k popisu číselného systému používají formátovací znaky, například 000_0000B nebo 0b000_00000 pro binární a 0F8H nebo 0xf8 pro hexadecimální čísla.
Konverze mezi základnami
Desetinný | Binární | Osmičkový | Hexadecimální |
---|---|---|---|
0 | 000000 | 00 | 00 |
1 | 000001 | 01 | 01 |
2 | 000010 | 02 | 02 |
3 | 000011 | 03 | 03 |
4 | 000100 | 04 | 04 |
5 | 000101 | 05 | 05 |
6 | 000110 | 06 | 06 |
7 | 000111 | 07 | 07 |
8 | 001000 | 10 | 08 |
9 | 001001 | 11 | 09 |
10 | 001010 | 12 | 0A |
11 | 001011 | 13 | 0B |
12 | 001100 | 14 | 0C |
13 | 001101 | 15 | 0D |
14 | 001110 | 16 | 0E |
15 | 001111 | 17 | 0F |
Každý z těchto číselných systémů je poziční systém, ale zatímco desítkové váhy jsou mocniny 10, osmičkové váhy jsou mocniny 8 a hexadecimální váhy jsou mocniny 16. Chcete-li převést z hexadecimální nebo osmičkové na desítkovou, pro každou číslici vynásobíte hodnotu číslice o hodnotu její polohy a poté přidá výsledky. Například:
Reprezentující zlomky v binární podobě
Čísla s pevným bodem
Pevný bod formátování může být užitečné k reprezentaci zlomků v binárním formátu.
Počet bitů potřebných pro požadovanou přesnost a rozsah musí být zvolen pro uložení zlomkové a celočíselné části čísla. Například pomocí 32bitového formátu lze použít 16 bitů pro celé číslo a 16 pro zlomek.
Po osmičkovém kousku následuje čtyřkový kousek, potom kousek dvou, poté kousek něčí. Frakční bity pokračují ve vzoru nastaveném celočíselnými bity. Další bit je poloviční bit, poté čtvrtinový bit, pak bit ⅛ atd. Například:
celočíselné bity | zlomkové bity | ||||
---|---|---|---|---|---|
0.500 | = | 1/2 | = | 00000000 00000000.10000000 00000000 | |
1.250 | = | 1+1/4 | = | 00000000 00000001.01000000 00000000 | |
7.375 | = | 7+3/8 | = | 00000000 00000111.01100000 00000000 |
Tato forma kódování nemůže představovat některé hodnoty v binárním formátu. Například zlomek 1/5, 0,2 v desítkové soustavě, nejbližší aproximace by byla následující:
13107 / 65536 | = | 00000000 00000000.00110011 00110011 | = | 0,199 9999 ... v desítkové soustavě |
13108 / 65536 | = | 00000000 00000000.00110011 00110100 | = | 0,2000122 ... v desítkové soustavě |
I když je použito více číslic, je přesná reprezentace nemožná. Číslo 1/3, zapsaný v desítkové soustavě jako 0,333333333 ..., pokračuje neurčitě. Pokud by byl předčasně ukončen, hodnota by nepředstavovala 1/3 přesně.
Čísla s plovoucí desetinnou čárkou
Zatímco v digitálních systémech se používají celá čísla bez znaménka i se znaménkem, ani 32bitové celé číslo nestačí ke zpracování celé škály čísel, které kalkulačka zvládne, a to nezahrnuje ani zlomky. Pro přiblížení většího rozsahu a přesnosti reálná čísla, musíme opustit celá podepsaná čísla a čísla s pevným bodem a přejít na „plovoucí bod " formát.
V desítkové soustavě známe čísla s plovoucí desetinnou čárkou formuláře (věděcký zápis ):
- 1.1030402 × 105 = 1.1030402 × 100000 = 110304.02
nebo, kompaktněji:
- 1.1030402E5
což znamená „1,1030402 krát 1 následovaných 5 nulami“. Máme určitou číselnou hodnotu (1.1030402) známou jako „významně ", vynásobený výkonem 10 (E5, což znamená 105 nebo 100 000), známý jako „exponent ". Pokud máme záporný exponent, znamená to, že číslo je vynásobeno 1, která je na mnoha místech napravo od desetinné čárky. Například:
- 2,3434E − 6 = 2,3434 × 10−6 = 2.3434 × 0.000001 = 0.0000023434
Výhodou tohoto schématu je, že pomocí exponentu můžeme získat mnohem širší rozsah čísel, i když je počet číslic v významě nebo „numerická přesnost“ mnohem menší než rozsah. Podobné binární formáty s plovoucí desetinnou čárkou lze definovat pro počítače. Existuje celá řada takových schémat, nejpopulárnější byla definována Institute of Electrical and Electronics Engineers (IEEE). The IEEE 754-2008 standardní specifikace definuje 64bitový formát s plovoucí desetinnou čárkou s:
- 11bitový binární exponent používající formát „nad 1023“. Přebytek-1023 znamená, že exponent se jeví jako binární celé číslo bez znaménka od 0 do 2047; odečtením 1023 získáte skutečnou podepsanou hodnotu
- 52-bitový význam, také nepodepsané binární číslo, definující zlomkovou hodnotu s úvodní implikovanou „1“
- znakový bit, který dává znaménko čísla.
Podívejme se, jak tento formát vypadá, a to tím, že ukážeme, jak by takové číslo bylo uloženo do 8 bajtů paměti:
byte 0 | S | x10 | x9 | x8 | x7 | x6 | x5 | x4 |
---|---|---|---|---|---|---|---|---|
bajt 1 | x3 | x2 | x1 | x0 | m51 | m50 | m49 | m48 |
bajt 2 | m47 | m46 | m45 | m44 | m43 | m42 | m41 | m40 |
bajt 3 | m39 | m38 | m37 | m36 | m35 | m34 | m33 | m32 |
bajt 4 | m31 | m30 | m29 | m28 | m27 | m26 | m25 | m24 |
bajt 5 | m23 | m22 | m21 | m20 | m19 | m18 | m17 | m16 |
bajt 6 | m15 | m14 | m13 | m12 | m11 | m10 | m9 | m8 |
bajt 7 | m7 | m6 | m5 | m4 | m3 | m2 | m1 | m0 |
kde „S“ označuje znaménkový bit, „x“ označuje exponentový bit a „m“ označuje signální bit. Jakmile jsou bity zde extrahovány, jsou převedeny pomocí výpočtu:
× (1 +
) × 2 - 1023
Toto schéma poskytuje čísla platná až na 15 desetinných míst s následujícím rozsahem čísel:
maximum | minimální | |
---|---|---|
pozitivní | 1.797693134862231E + 308 | 4.940656458412465E-324 |
záporný | -4,940656458412465E-324 | -1,797693134862231E + 308 |
Specifikace také definuje několik speciálních hodnot, které nejsou definovanými čísly a jsou známé jako NaNs, pro „Not A Number“. Používají je programy k označení neplatných operací a podobně.
Některé programy také používají 32bitová čísla s plovoucí desetinnou čárkou. Nejběžnější schéma používá 23bitový význam se znaménkovým bitem a 8bitový exponent ve formátu „přebytek-127“, který udává sedm platných desetinných míst.
byte 0 | S | x7 | x6 | x5 | x4 | x3 | x2 | x1 |
---|---|---|---|---|---|---|---|---|
bajt 1 | x0 | m22 | m21 | m20 | m19 | m18 | m17 | m16 |
bajt 2 | m15 | m14 | m13 | m12 | m11 | m10 | m9 | m8 |
bajt 3 | m7 | m6 | m5 | m4 | m3 | m2 | m1 | m0 |
Bity jsou převedeny na číselnou hodnotu pomocí výpočtu:
× (1 +
) × 2 - 127
což vede k následujícímu rozsahu čísel:
maximum | minimální | |
---|---|---|
pozitivní | 3,402823E + 38 | 2.802597E-45 |
záporný | -2,802597E-45 | -3,402823E + 38 |
Taková čísla s plovoucí desetinnou čárkou jsou obecně známá jako „reals“ nebo „floats“, ale s řadou variací:
32bitová plovoucí hodnota se někdy nazývá „real32“ nebo „single“, což znamená „hodnota s plovoucí desetinnou čárkou s jednou přesností“.
64bitový plovák se někdy nazývá „real64“ nebo „double“, což znamená „hodnota s plovoucí desetinnou čárkou s dvojitou přesností“.
Vztah mezi čísly a bitovými vzory je zvolen pro pohodlí při manipulaci s počítačem; osm bajtů uložených v paměti počítače může představovat 64bitový reálný, dva 32bitové reálné nebo čtyři podepsaná nebo nepodepsaná celá čísla nebo nějaký jiný druh dat, který se vejde do osmi bajtů. Jediný rozdíl je v tom, jak je počítač interpretuje. Pokud by počítač uložil čtyři celá čísla bez znaménka a poté je přečetl zpět z paměti jako 64bitové reálné, téměř vždy by to bylo dokonale platné reálné číslo, i když by to byla nevyžádaná data.
Pouze konečný rozsah reálných čísel může být reprezentován daným počtem bitů. Aritmetické operace mohou přetékat nebo podtečovat a vytvářet hodnotu příliš velkou nebo příliš malou na to, aby byla reprezentována.
Reprezentace má omezenou přesnost. Například pouze 15 desetinných míst lze reprezentovat 64bitovým reálným. Pokud je k velkému číslu přidáno velmi malé číslo s plovoucí desetinnou čárkou, výsledkem bude jen velké číslo. Malý počet byl příliš malý na to, aby se dokonce zobrazil v rozlišení 15 nebo 16 číslic, a počítač jej účinně zahodil. Analýza účinku omezené přesnosti je dobře prostudovaný problém. Odhady velikosti zaokrouhlovacích chyb a metody omezující jejich účinek na velké výpočty jsou součástí každého velkého výpočetního projektu. Mez přesnosti se liší od meze rozsahu, protože ovlivňuje význam, nikoli exponent.
Význam je binární zlomek, který nemusí nutně dokonale odpovídat desetinnému zlomku. V mnoha případech součet vzájemných mocnin 2 neodpovídá konkrétnímu desetinnému zlomku a výsledky výpočtů budou mírně vypnuty. Například desetinný zlomek „0,1“ odpovídá nekonečně se opakujícímu binárnímu zlomku: 0,000110011 ...[6]
Čísla v programovacích jazycích
![]() | Tato sekce potřebuje další citace pro ověření.Prosince 2018) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Programování v montážní jazyk vyžaduje, aby programátor sledoval reprezentaci čísel. Pokud procesor nepodporuje požadovanou matematickou operaci, musí programátor k provedení operace vypracovat vhodný algoritmus a sekvenci instrukcí; na některých mikroprocesorech musí být dokonce i celočíselné násobení provedeno v softwaru.
Vysoká úroveň programovací jazyky jako LISP a Krajta nabídnout abstraktní číslo, které může být rozšířeným typem, jako je Racionální, bignumnebo komplex. Matematické operace jsou prováděny knihovními rutinami poskytovanými implementací jazyka. Daný matematický symbol ve zdrojovém kódu, od přetížení operátora, vyvolá jiný objektový kód odpovídající reprezentaci číselného typu; matematické operace s jakýmkoli číslem - ať už podepsané, nepodepsané, racionální, s plovoucí desetinnou čárkou, pevnou řádovou čárkou, integrálem nebo komplexem - jsou psány přesně stejným způsobem.
Některé jazyky, například REXX a Jáva, poskytují operace s desetinnými plovoucími čárkami, které poskytují chyby zaokrouhlování jiné formy.
Viz také
- Aritmetika s libovolnou přesností
- Binárně kódované desetinné místo
- Binární číselná soustava
- Šedý kód
- Číselná soustava
Poznámky a odkazy
Počáteční verze tohoto článku byla založena na a veřejná doména článek od Vektorový web Grega Goebela.
- ^ Jon Stokes (2007). Uvnitř stroje: ilustrovaný úvod do mikroprocesorů a počítačové architektury. Žádný lis na škrob. p. 66. ISBN 978-1-59327-104-6.
- ^ "definice bytu". Citováno 24. dubna 2012.
- ^ "Mikroprocesor a CPU (centrální procesorová jednotka)". Síťový slovník. Archivovány od originál dne 3. října 2017. Citováno 1. května 2012.
- ^ "definice nybble". Citováno 3. května 2012.
- ^ „Nybble“. TechTerms.com. Citováno 3. května 2012.
- ^ Goebel, Greg. "Formát číslování počítačů". Citováno 10. září 2012.