TIP#313: Dvojková, desítková, šestnáctková a osmičková soustava? Co s tím?

Za dávných časů byla znalost binární a šestnáctkové číselné soustavy nutnost, zejména mezi těmi kdo se věnovali nějakému tomu programování. A patřilo to i k základním znalostem o „výpočetní technice“. Vzpomněl jsem si na to při nedávném tipu týkajícím se zapnutí NumLocku pro Windows. Protože číslo 2147483650 se ve většině komentářů na Internetu považovalo za záhadné, přitom to vůbec nic záhadného nebylo. Stačilo ho jenom převést do šestnáctkové (hexadecimální) soustavy a vše bylo jasné.

My lidé máme deset prstů, takže se tak nějak vyvinula logická potřeba počítat v desítkové (decimální) soustavě. Tu známe důvěrně a po mnoha a mnoha letech učení v ní umíme sčítat, odčítat, násobit a snadno poznáme všechny další potřebné věci.

Počítače jsou ale založené na bitech schopných nabýt pouze stavu 0 nebo 1. A složitější (větší ) věci (čísla) se skládají právě z posloupnosti bitů – celé to funguje v dvojkové (binární) soustavě. 0 je 0, 1 je 1, 2 je 10, 3 je 11, 4 je 100, 5 je 101 a takhle to pokračuje pořád dál – jako každá číselná soustava i tady to funguje tak, že jednotlivé další a další pozice v čísle jsou mocniny – v tomto případě čísla dvě. Vědečtější a důkladnější vysvětlení najdete třeba ve Wikipedii pod Dvojková soustava.

Osmičková (oktalová) soustava má základ osm a posloupnost 0, 1, 2, 3, 4, 5, 6, a 7 a také má své kořeny v počátcích počítačů. Nepoužívá se až tak  moc, ale pokud chcete vidět pozůstatky, tak třeba v podobě pojmenování přístupových práv v Linuxu.

Šestnáctková (hexadecimální) soustava je podstatně složitější, ale také rozšířenější. V počítačích, v programování, ji najdete poměrně často, třeba je dost zásadní pro adresy v paměti a pokud kódujete v HTML/CSS tak určitě víte, že barvy mají šestnáctkovou podobu. A se šestnáctkovou podobou se setkáte třeba i při editaci obsahu souborů.

2015-11-09 08_01_44-Start

Zde je základ šestnáct, takže po klasické posloupnosti od 0 do devíti ještě pokračuje znaky – A, B, C, D, E a F (F je patnáct). Ti co na něčem takovém vyrostli třeba vědí, že 0xFFFF je prostě 65535 a pamatují si spoustu dalších zábavných věcí. Ve Wikipedii k ní najdete hodně dlouhé povídání v Šestnáctková soustava

Co když potřebujete mezi soustavami převádět?

Může se stát, že budete potřebovat mezi číselnými soustavami převádět a asi už nebude na světě příliš těch, kteří některé z převodů mezi soustavami zvládají z hlavy. Převod si můžete spočítat hezky číslo po čísle (výše zmíněné články ve Wikipedii k tomu dávají dostatek pokynů), ale jednodušší bude použít kalkulačky – některé fyzické to umí, ale v době Internetu to můžete svěřit některé z těch internetových nebo těch pokročilejších na mobilních telefonech.

Především to ale můžete svěřit Google – funguje to tak, že prostě píšete do vyhledávacího políčka co chcete převést na co. Občas je nutné výchozí číslo napsat správně. Z desítkové na jiné je to jednoduché, použijte to jako „1000 in hex“ (můžete „in hexadecimal“), „1000 in binary“, „1000 in octal“. Opačným směrem bude potřeba správně zapsat výchozí číslo, takže třeba „0b10010001 in decimal“, „0xFFFF in decimal“ a „0o777 in decimal“.

2015-11-09 08_05_44-0xFFFF to binary - Google Search

TIP: Kalkulačka od Google umí převádět i číslice římské, zkuste si třeba „MDMCXIX in decimal“. Podobně můžete chtít opačný převod, třeba „2015 to roman“.

Na Internetu jinak najdete řadu online konverterů – Binary to Decimal to Hexadecimal Converter, další co umí i osmičkové věci na calc.50x.eu nebo coderstoolbox.net/number

Kalkulačka ve Windows (spustíte ji třeba jako „calc“ z příkazové řádky) umí také převádět čísla a různé další triky. Tu ve Windows 10 musíte ale přepnout na „programátorská“ a případně si nezapomenout nastavit velikost používaných čísel (WORD uprostřed znamená, že jde jenom o dvoubajtová, tedy 0 až FFFFF).

2015-11-09 07_49_37-Kalkulačka

Pokud máte Excel tak můžete také převádět mezi číselnými soustavami, stačí si najít potřebné funkce. Můžete to dělat přes univerzální funkcí BASE, ale ještě najdete další – DECIMAL a pak celá sada (tam a zpět) konverzí – HEX2DEC, DEC2HEX, DEC2OCT, OCT2DEC, OCT2BIN, BIN2OCT a takhle by bylo možné ještě chvíli pokračovat.

Advertisements