Základy jako dvojková a šestnáctková soustava vypadají na první pohled trochu zvláštně. Klíčem je pochopit, jak různé soustavy „tikají“ jako tachometr, když jsou plné. Základ 10, naše desítková soustava, „tiká“, když získá 10 položek a vytvoří novou číslici. Čekáme 60 sekund, než se „překlopí“ na novou minutu. Šestnáctková a dvojková soustava jsou podobné, ale přeškrtávají se každých 16, resp. 2 položky.
Zkuste převést čísla do šestnáctkové a dvojkové soustavy zde:
Když už: Unární čísla
Kdysi dávno jsme neměli základní soustavy! Bylo to do kopce oběma směry, přes sníh a spalující horko. Když jsi chtěl počítat s jedničkou, napsal jsi:
l
Když jsi chtěl počítat s pěti, napsal jsi
lllll
A je jasné, že 1 + 5 = 6
l + lllll = llllll
To je nejjednodušší způsob počítání.
Vstupují Římané
V římských číslicích byla dvojka dvakrát jedna. Tři byla jedna, třikrát:
one = Itwo = IIthree = III
Přesto se rozhodli, že to umí lépe než podle staré tradice čar v písku. Pro pětku bychom mohli použít V jako symbol lllll a dostali bychom něco jako
l + V = Vl
Není to špatné, co? A samozřejmě existuje mnoho dalších symbolů (L, C, M atd.), které můžete použít.
Klíčové je, že V a lllll jsou dva způsoby kódování čísla 5.
Dejte každému číslu jméno
Dalším průlomem bylo uvědomění si, že každé číslo může být samostatným pojmem. Místo toho, abyste trojku reprezentovali jako řadu jedniček, dejte jí vlastní symbol: „3″. Udělejte to od jedničky do devítky a dostanete symboly:
1 2 3 4 5 6 7 8 9
Římané byli blízko, tak blízko, ale dali jedinečné symboly pouze číslům 5, 10, 50, 100, 1000 atd.
Používejte svou pozici
Teď je jasné, že nemůžete dát každému číslu vlastní symbol. Je jich prostě příliš mnoho.
Všimněte si však jednoho poznatku o římských číslicích: používají pozici symbolů k označení významu.
IV znamená „odečti 1 od 5″
a VI znamená „přičti 1 k 5″.
V naší číselné soustavě používáme pozici podobným způsobem. Vždy sčítáme a nikdy neodečítáme. A každá pozice je o 10 větší než ta předchozí.
Naše volba základu 10
Proč jsme se rozhodli násobit pokaždé 10? Nejspíš proto, že máme 10 prstů.
Jedním bodem, který je třeba si uvědomit, je, že potřebujete dostatek číslic, abyste je „zaplnili“, dokud nenarazíte na další číslo. Dovolte mi, abych vám to předvedl.
Chceme-li přetáčet počítadlo kilometrů takříkajíc každou desítku, potřebujeme symboly pro čísla jedna až devět; k desítce jsme se ještě nedostali. Představte si čísla jako pomalu tikající nahoru – v jakém okamžiku překlopíte další jednotku a začnete od nuly?“
Zapište nulu
A co se stane, když dosáhneme desítky? Jak ukážeme, že chceme přesně jednu „desítku“ a nic ve sloupci „jedniček“?
Použijeme nulu, číslo, které neexistuje. Nula je docela zvláštní pojem, je to zástupný znak, prázdné místo, mezera a spousta dalších věcí. Stačí říct, že nula je jeden z největších vynálezů všech dob.
Nula nám umožňuje mít prázdné místo, což Římané neměli. Podívejte se, jak nepřehledná jsou jejich čísla bez ní.
Slavný román George Orwella „1984″ by byl „MCMLXXXIV“! Hned se to valí z jazyka, že?
Vzhledem k dalším základům
Pamatujte, že jsme se rozhodli přetáčet náš tachometr každých deset. Naše počítání vypadá takto:
123456789 (uh oh, I'm getting full!)10 (ticked over – start a new digit)
Co kdybychom při počítání přetáčeli na šedesátce, jako to děláme u sekund a minut?
1 second2345…58591:00 (60 seconds aka 1 minute. We've started a new digit.)
Zatím je všechno v pořádku, že? Všimněte si, že dvojtečkou (:) označujeme, že jsme u nové „číslice“. V základu 10 může každá číslice stát samostatně.
Zkus základ 16
Pokud chceme základ 16, mohli bychom udělat něco podobného:
123456789101112131415 (we're getting full)1:00 (16 – we've started a new digit)
Naproti tomu nechceme psát šestnáctková čísla se zápisem dvojtečky (i když bychom mohli). Raději uvaříme samostatné symboly pro 10-15, abychom mohli čísla prostě zapsat tak, jak jsme zvyklí. Došly nám čísla (1-9 už jsme použili, 0 slouží jako zástupný znak), takže potřebujeme nějaké další symboly. Mohli bychom použít nějaké čtverečky nebo jiné tvary, ale konvence je používat písmena v římském stylu. Stejně jako se z 5 stalo V, používají programátoři písmena A-F, aby měli dostatek číslic až do 16. To znamená,
123456789A (10 – we're using the symbol "A")B (11)C (12)D (13)E (14)F (15 – uh oh, we're getting full)10 (16 – we start a new digit)
Aha! Nyní můžeme použít jednu číslici na „místo“ a víme, že 10 vlastně znamená, že jsme se jednou „přeškrtli na 16″.
20 znamená, že jsme se dvakrát přeškrtli na 16 (32).
25 znamená, že jsme se dvakrát přeškrtli na 16 (což nám dává 32) a šli o 5 navíc. Celkový součet je 32 + 5 = 37.
Rychlý přehled
Je to zatím se mnou? Tohle je docela v pohodě, ne? Můžeme počítat v libovolném systému. Všimněte si také, že základ 16 je „prostorově úspornější“ v tom smyslu, že číslo jako 11 můžeme zapsat jednociferně: B.
Základ 16 se ve skutečnosti od základu 10 příliš neliší, jen nám trvá déle, než ho naplníme.
Úžasný svět dvojkové soustavy
Viděli jsme už spoustu základních soustav, od příliš jednoduchých jedničkových, přes nepřehledné římské číslice, ustálený základ 10 až po kompaktní základ 16.
Co je na dvojkové soustavě skvělé? V duchu zachování jednoduchosti je to nejjednodušší číselná soustava, která má koncept „tykání“. Unární, kde prostě píšeme 1, 11, 111… prostě pokračuje donekonečna. Binární, se dvěma možnostmi (1 a 0), vypadá takto:
1: 12: 10 (we're full – tick over)3: 114: 100 (we're full again – tick over)5: 1016: 1107: 1118: 1000 (tick over again)…
a tak dále.
Protože je binární soustava tak jednoduchá, je velmi snadné ji zabudovat do hardwaru. Potřebujete jen věci, které se mohou zapnout nebo vypnout (reprezentující 1 a 0), a ne věci, které mají 10 možných stavů (reprezentující desítkovou soustavu).
Protože je binární systém tak jednoduchý, je také odolný vůči chybám. Pokud je váš signál „částečně zapnutý“ (řekněme 0,4), můžete předpokládat, že je to nula. A pokud je z větší části zapnutý (řekněme 0,8), můžete předpokládat, že je to 1. Pokud používáte systém s 10 možnými stavy, je obtížné zjistit, kdy došlo k chybě. To je jeden z důvodů, proč jsou digitální signály tak odolné vůči šumu.
Další příklady bází
Neustále používáme jiné báze, dokonce i dynamicky se měnící báze. Obvykle o tom ale takto nepřemýšlíme:
Hodiny, minuty, sekundy: 1:32:04
- Víme, že je to 1 hodina, 32 minut, 4 sekundy. V sekundách je to 16060 + 32*60 + 4.
Podle délky stop a palců: 3′ 5″
- To je 3 stopy, 5 palců nebo 3 * 12 + 5 palců.
Libry a unce: To je 8 * 16 + 5 uncí
- Protože libra je 16 uncí, je to 8 * 16 + 5 uncí. Celou dobu používáme číselnou soustavu se základem 16!“
Další myšlenky
„10“ v jakékoli číselné soustavě označuje základ a znamená, že jsme jednou přeškrtli. Desítka ve dvojkové soustavě znamená dvojku, desítka v desítkové soustavě znamená deset a desítka v šestnáctkové soustavě znamená šestnáct.
Jak tato čísla od sebe oddělit? Programátoři často před binární čísla píší „0b“. Takže 2 v binární soustavě je
0b10
Podobně budou psát 0x před šestnáctková čísla. Takže 16 v šestnáctkové soustavě je:
0×10
Pokud před ním nejsou žádné symboly (0b nebo 0x), předpokládáme, že se jedná o číslo se základem 10, tedy běžné číslo.
Teď se pusťte do práce a užijte si své nové znalosti!
Další příspěvky v této sérii
- Číselné soustavy a základy
- Krátký průvodce GUIDy
- Pochopení rychlé inverzní odmocniny v Quakeu
- Jednoduchý úvod do počítačů Sítě
- Výměna dvou proměnných pomocí XOR
- Pochopení big a little endian pořadí bajtů
- Unicode a vy
- Malý diddy o formátech binárních souborů
- Třídicí algoritmy
.