Prevodník číselných sústav
Prevod čísla z dvojkovej, osmičkovej, desiatkovej alebo šestnástkovej sústavy do všetkých ostatných naraz – aj s postupom krok za krokom, aký chcú v škole. Zvládne záporné aj desatinné čísla a ľubovoľný základ 2 – 36. Zadarmo a priamo vo vašom prehliadači – nič sa nikam neodosiela.
Postup prevodu krok za krokom
Všetky sústavy naraz – aj s postupom
Dvojková, osmičková, desiatková, šestnástková aj základ 2 – 36 • Postup krok za krokom • Záporné, desatinné aj obrovské čísla • Všetko v prehliadači
Čo sú číselné sústavy
Číselná sústava je spôsob, ako zapísať číslo pomocou číslic. Bežne používame desiatkovú sústavu s číslicami 0 – 9, no počítače pracujú v dvojkovej (binárnej), kde existujú len 0 a 1, a programátori si ju skracujú šestnástkovou (hexadecimálnou) či osmičkovou. Všetky sú pozičné: hodnota číslice závisí od jej miesta. V čísle 255 znamená prvá päťka päťdesiat a druhá päť, lebo každá pozícia je mocnina základu – pri desiatkovej sústave 1, 10, 100, pri dvojkovej 1, 2, 4, 8, 16…
Základ sústavy hovorí, koľko číslic má a kedy sa „prenáša jednotka“: v dvojkovej sústave po dvoch (1 + 1 = 10₂), v šestnástkovej po šestnástich (F + 1 = 10₁₆). Hodnota čísla sa však nemení – 255, 11111111₂, 377₈ aj FF₁₆ je stále to isté množstvo. Prevodník vyššie ukazuje presne toto: jedno číslo vo všetkých zápisoch naraz. Mimochodom, rímske čísla sú príkladom nepozičnej sústavy – X znamená desať bez ohľadu na miesto.
| Sústava | Základ | Číslice | Kde sa používa |
|---|---|---|---|
| Dvojková (binárna) | 2 | 0 a 1 | všetko v počítači – bity, bajty, logické obvody |
| Osmičková (oktálová) | 8 | 0 – 7 | práva súborov v Linuxe (chmod 755), staršie systémy |
| Desiatková (dekadická) | 10 | 0 – 9 | bežné počítanie – máme desať prstov |
| Šestnástková (hexadecimálna) | 16 | 0 – 9 a A – F | farby na webe (#FF0000), adresy v pamäti, MAC adresy, hashe |
Ako prevodník používať
Napíšte číslo a prevodník ho vypíše v dvojkovej, osmičkovej, desiatkovej a šestnástkovej sústave aj v ľubovoľnej ďalšej so základom 2 – 36. Sústavu zadaného čísla spozná podľa zápisu – predpony 0x, 0b, 0o, indexu ako v učebnici 1010₂, (1010)₂ či 1010(2) alebo podľa písmen A – F; číslo bez označenia berie ako desiatkové, prepínačom Dec/Bin/Okt/Hex to kedykoľvek zmeníte. Záporné čísla píšte s mínusom, desatinné s čiarkou, dlhé čísla pokojne s medzerami medzi skupinami číslic.
Pod výsledkom je postup prevodu krok za krokom – pozičný súčet do desiatkovej sústavy a tabuľka delenia so zvyškami do zvolenej sústavy (aj do inej so základom 2 – 36), pri desatinných číslach násobenie základom s vyznačenou periódou, presne tak, ako sa to učí na hodinách informatiky a matematiky. Výsledok si do úlohy skopírujete jedným klikom.
Dvojková sústava (binárna)
Dvojková sústava má základ 2 a jediné dve číslice: 0 a 1. Každá pozícia má hodnotu mocniny dvoch, takže 1011₂ = 1·8 + 0·4 + 1·2 + 1·1 = 11. Jedna dvojková číslica je bit (binary digit), osem bitov tvorí bajt – a do bajtu sa zmestí 2⁸ = 256 hodnôt, čiže čísla 0 až 255. Preto sa 255 objavuje všade: v RGB farbách, IP adresách aj v šestnástkovom FF.
Počítače dvojkovú sústavu nepoužívajú z rozmaru. Dva stavy – je napätie, nie je napätie – sa dajú spoľahlivo rozlíšiť aj pri rušení, lacno uložiť a jednoducho spracovať logickými obvodmi. Všetko ostatné, čísla, text, obrázky aj zvuk, je nakoniec len dlhý rad núl a jednotiek.
| 2⁰ | 2¹ | 2² | 2³ | 2⁴ | 2⁵ | 2⁶ | 2⁷ | 2⁸ | 2⁹ | 2¹⁰ | 2¹⁶ | 2²⁰ | 2³² |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 | 512 | 1 024 | 65 536 | 1 048 576 | 4 294 967 296 |
Prevod z desiatkovej do dvojkovej sústavy (decimal to binary)
Najspoľahlivejší postup je delenie dvoma so zvyškami: číslo delíme dvoma, zapíšeme zvyšok (0 alebo 1) a s podielom pokračujeme, kým nie je nula. Zvyšky potom prečítame odspodu nahor. Pre číslo 25:
| Delenie | Podiel | Zvyšok |
|---|---|---|
| 25 : 2 | 12 | 1 |
| 12 : 2 | 6 | 0 |
| 6 : 2 | 3 | 0 |
| 3 : 2 | 1 | 1 |
| 1 : 2 | 0 | 1 |
Odspodu nahor: 25 = 11001₂. Rýchlejšia alternatíva na menšie čísla je odčítanie mocnín dvoch: nájdite najväčšiu mocninu, ktorá sa do čísla zmestí (16), na jej pozíciu napíšte 1 a pokračujte so zvyškom (25 − 16 = 9 → 8 sa zmestí, zostane 1 → 4 nie, 2 nie, 1 áno). Jednotky sú teda na pozíciách 16, 8 a 1, nuly na 4 a 2: 25 = 16 + 8 + 1 = 11001₂. Prevodník vám tabuľku delenia vypíše pre každé číslo – stačí v postupe zvoliť Bin.
Prevod z dvojkovej do desiatkovej sústavy (binary to decimal)
Opačný smer je pozičný súčet: každú číslicu vynásobíme mocninou dvoch podľa jej pozície (sprava 2⁰ = 1, 2¹ = 2, 2² = 4, 2³ = 8…) a všetko sčítame. V praxi stačí sčítať mocniny na pozíciách, kde je jednotka:
11001₂ = 1·2⁴ + 1·2³ + 0·2² + 0·2¹ + 1·2⁰ = 16 + 8 + 0 + 0 + 1 = 25
Rovnaký postup funguje pre každú sústavu – len namiesto mocnín dvoch berieme mocniny osem či šestnásť. V programovacích jazykoch to za vás spraví jedna funkcia:
| Jazyk | Do dvojkovej | Z dvojkovej | Šestnástková |
|---|---|---|---|
| Python | bin(25) → "0b11001" | int("11001", 2) → 25 | hex(255) · int("FF", 16) |
| JavaScript | (25).toString(2) | parseInt("11001", 2) | (255).toString(16) · parseInt("FF", 16) |
| Excel / Tabuľky Google | =DEC2BIN(25) | =BIN2DEC(11001) | =DEC2HEX(255) · =HEX2DEC("FF") |
| C / C++ | bitset<8>(25) | strtol("11001", NULL, 2) | printf("%X", 255) · strtol("FF", NULL, 16) |
Šestnástková sústava (hexadecimálna, hex)
Šestnástková sústava má základ 16, takže potrebuje šestnásť číslic: po deviatke nasledujú písmená A = 10, B = 11, C = 12, D = 13, E = 14, F = 15. Programátori ju milujú preto, že jedna šestnástková číslica je presne štvorica bitov – bajt sa zapíše dvoma znakmi (00 – FF) namiesto ôsmich núl a jednotiek. V kóde ju označuje predpona 0x: 0xFF = 255, 0x10 = 16.
| Dec | Bin | Hex | Dec | Bin | Hex |
|---|---|---|---|---|---|
| 0 | 0000 | 0 | 8 | 1000 | 8 |
| 1 | 0001 | 1 | 9 | 1001 | 9 |
| 2 | 0010 | 2 | 10 | 1010 | A |
| 3 | 0011 | 3 | 11 | 1011 | B |
| 4 | 0100 | 4 | 12 | 1100 | C |
| 5 | 0101 | 5 | 13 | 1101 | D |
| 6 | 0110 | 6 | 14 | 1110 | E |
| 7 | 0111 | 7 | 15 | 1111 | F |
Prevod zo šestnástkovej do desiatkovej sústavy (hex to decimal)
Postup je rovnaký ako pri dvojkovej sústave, len s mocninami šestnástich (1, 16, 256, 4 096…) a s písmenami prepočítanými na čísla:
FF₁₆ = 15·16¹ + 15·16⁰ = 240 + 15 = 255
1A3₁₆ = 1·16² + 10·16¹ + 3·16⁰ = 256 + 160 + 3 = 419
Prevod z desiatkovej do šestnástkovej sústavy (decimal to hex)
Číslo delíme šestnástimi a zapisujeme zvyšky – zvyšky 10 až 15 prepíšeme na písmená A až F – a čítame ich odspodu nahor. Pre číslo 419:
| Delenie | Podiel | Zvyšok |
|---|---|---|
| 419 : 16 | 26 | 3 |
| 26 : 16 | 1 | 10 = A |
| 1 : 16 | 0 | 1 |
Odspodu nahor: 419 = 1A3₁₆. Medzi dvojkovou a šestnástkovou sústavou sa nedelí vôbec – stačí ísť po štvoriciach bitov: 1111 1111₂ → F F, 1010 0011₂ → A 3, presne podľa tabuľky vyššie. Rovnako cez dvojkovú sústavu prevediete osmičkové číslo na šestnástkové: 377₈ → 011 111 111 → 1111 1111 → FF₁₆. Prevodník túto skratku ukáže pod postupom.
Kde hex stretnete: farby na webe #FF0000 sú tri bajty R, G, B (zistí ich náš color picker), ASCII kódy znakov sa uvádzajú v hex (A = 41), rovnako MAC adresy, UUID, hashe súborov či adresy v pamäti pri ladení programov.
Osmičková sústava (oktálová)
Osmičková sústava používa číslice 0 – 7 a jedna osmičková číslica zodpovedá trom bitom (111₂ = 7). Dnes ju stretnete hlavne pri právach súborov v Linuxe: chmod 755 znamená rwx r-x r-x, lebo 7 = 111 (čítať, zapisovať, spúšťať) a 5 = 101 (čítať a spúšťať). V Pythone a JavaScripte ju označuje predpona 0o (0o755 = 493), v jazyku C nula na začiatku – 0755. Preto je v C zápis 010 osem, nie desať, čo dodnes mätie začiatočníkov.
Tabuľka číselných sústav 0 – 31
Prvých 32 čísel vo všetkých štyroch sústavách – hodí sa k úlohám aj ako ťahák. Všimnite si, že šestnástková číslica sa zmení vždy po 16 a osmičková po 8 číslach.
| Dec | Bin | Okt | Hex | Dec | Bin | Okt | Hex |
|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 16 | 10000 | 20 | 10 |
| 1 | 1 | 1 | 1 | 17 | 10001 | 21 | 11 |
| 2 | 10 | 2 | 2 | 18 | 10010 | 22 | 12 |
| 3 | 11 | 3 | 3 | 19 | 10011 | 23 | 13 |
| 4 | 100 | 4 | 4 | 20 | 10100 | 24 | 14 |
| 5 | 101 | 5 | 5 | 21 | 10101 | 25 | 15 |
| 6 | 110 | 6 | 6 | 22 | 10110 | 26 | 16 |
| 7 | 111 | 7 | 7 | 23 | 10111 | 27 | 17 |
| 8 | 1000 | 10 | 8 | 24 | 11000 | 30 | 18 |
| 9 | 1001 | 11 | 9 | 25 | 11001 | 31 | 19 |
| 10 | 1010 | 12 | A | 26 | 11010 | 32 | 1A |
| 11 | 1011 | 13 | B | 27 | 11011 | 33 | 1B |
| 12 | 1100 | 14 | C | 28 | 11100 | 34 | 1C |
| 13 | 1101 | 15 | D | 29 | 11101 | 35 | 1D |
| 14 | 1110 | 16 | E | 30 | 11110 | 36 | 1E |
| 15 | 1111 | 17 | F | 31 | 11111 | 37 | 1F |
Záporné a desatinné čísla
Na papieri má záporné číslo jednoducho mínus: −42 = −101010₂. Procesor však znamienko nemá kam napísať, preto používa dvojkový doplnok (two’s complement): v 8 bitoch je −42 zapísané ako 11010110, čiže 256 − 42 = 214. Najvyšší bit tak funguje ako znamienko a sčítanie záporných čísel beží tým istým obvodom ako sčítanie kladných. Prevodník pri zápornom čísle ukáže doplnok pre 8, 16, 32 aj 64 bitov. Funguje to aj opačne: dvojkové číslo s 8, 16, 32 alebo 64 číslicami (či šestnástkové s 2, 4, 8 alebo 16) prečíta aj ako číslo so znamienkom – 11010110₂ v dvojkovom doplnku je −42.
Desatinná časť sa prevádza opačne než celá: namiesto delenia ju násobíme základom a celé časti súčinov tvoria číslice za čiarkou. 0,625 · 2 = 1,25 → 1; 0,25 · 2 = 0,5 → 0; 0,5 · 2 = 1,0 → 1, teda 0,625 = 0,101₂. Nie každé desatinné číslo má v dvojkovej sústave konečný zápis – 0,1 je 0,000110011001100…₂ do nekonečna. Práve preto počítač pri výpočte 0,1 + 0,2 nedostane presne 0,3. Taký rozvoj je vždy periodický: prevodník v postupe ukáže, kde sa zvyšok zopakuje, a periódu označí pruhom – 0,1 = 0,00011₂.
Príklady na precvičenie s riešením
Skúste si ich najprv vypočítať sami. Riešenie rozbalíte kliknutím a tlačidlom pod ním si v prevodníku pozriete celý postup krok za krokom.
- Preveďte číslo 45 do dvojkovej sústavy.
Riešenie
Delíme dvoma: 45 : 2 = 22 zv. 1, 22 : 2 = 11 zv. 0, 11 : 2 = 5 zv. 1, 5 : 2 = 2 zv. 1, 2 : 2 = 1 zv. 0, 1 : 2 = 0 zv. 1. Zvyšky odspodu nahor: 101101₂ (kontrola: 32 + 8 + 4 + 1 = 45).
- Preveďte 110110₂ do desiatkovej sústavy.
Riešenie
Sčítame mocniny dvoch na pozíciách s jednotkou: 1·32 + 1·16 + 0·8 + 1·4 + 1·2 + 0·1 = 32 + 16 + 4 + 2 = 54.
- Preveďte číslo 100 do šestnástkovej sústavy.
Riešenie
100 : 16 = 6 zv. 4, 6 : 16 = 0 zv. 6. Odspodu nahor: 64₁₆ (kontrola: 6·16 + 4 = 100).
- Preveďte 2F₁₆ do desiatkovej sústavy.
Riešenie
F má hodnotu 15, takže 2·16 + 15·1 = 32 + 15 = 47.
- Preveďte 11011010₂ do šestnástkovej sústavy.
Riešenie
Bez delenia, po štvoriciach bitov sprava: 1101 = D, 1010 = A, spolu DA₁₆ (= 218).
- Preveďte 157₈ do dvojkovej sústavy.
Riešenie
Každú osmičkovú číslicu rozpíšeme na trojicu bitov: 1 = 001, 5 = 101, 7 = 111, spolu 001 101 111, teda 1101111₂ (= 111).
- Preveďte 0,375 do dvojkovej sústavy.
Riešenie
Násobíme dvoma: 0,375 · 2 = 0,75 → 0; 0,75 · 2 = 1,5 → 1; 0,5 · 2 = 1 → 1. Číslice zhora nadol: 0,011₂.
- Zapíšte −5 v 8-bitovom dvojkovom doplnku.
Riešenie
5 = 00000101, bity prevrátime na 11111010 a pripočítame 1: 11111011 (= 256 − 5 = 251).
- Preveďte 0,1 do dvojkovej sústavy. Pozor, chyták!
Riešenie
0,1 · 2 = 0,2 → 0; 0,2 · 2 = 0,4 → 0; 0,4 · 2 = 0,8 → 0; 0,8 · 2 = 1,6 → 1; 0,6 · 2 = 1,2 → 1 a znova 0,2 – od toho miesta sa číslice 0011 opakujú donekonečna: 0,00011₂ = 0,000110011…₂. Presne preto 0,1 + 0,2 v počítači nie je presne 0,3.
Binárny kód a text
Keď niekto hovorí o binárnom kóde, často myslí text zapísaný nulami a jednotkami. Funguje to cez kódy znakov: písmeno A má v tabuľke ASCII kód 65, čiže 01000001₂, a slovo „Ahoj“ je rad štyroch bajtov. Tento prevodník pracuje s číslami – text do binárneho kódu, hexu či späť prevedie naša ASCII tabuľka, ktorá zvládne aj slovenskú diakritiku v UTF-8. A keď potrebujete do textu zabaliť celý súbor, slúži na to Base64.
Časté otázky o číselných sústavách
Dvojková, šestnástková a osmičková sústava, postup prevodu aj zápisy 0x a 0b.
Čo je dvojková sústava a prečo ju používajú počítače?
Dvojková (binárna) sústava zapisuje každé číslo len číslicami 0 a 1 – každá pozícia je mocnina dvoch (1, 2, 4, 8, 16…). Počítače ju používajú preto, že jedna číslica, bit, zodpovedá najjednoduchšiemu fyzickému stavu: je napätie, nie je napätie. Osem bitov tvorí bajt, ktorý zapíše čísla 0 až 255.
Ako previesť číslo z desiatkovej do dvojkovej sústavy?
Delíme číslo dvoma a zapisujeme zvyšky, kým podiel nie je nula; zvyšky potom prečítame odspodu nahor. Napríklad 25 : 2 = 12 zv. 1, 12 : 2 = 6 zv. 0, 6 : 2 = 3 zv. 0, 3 : 2 = 1 zv. 1, 1 : 2 = 0 zv. 1 – odspodu 11001. Prevodník vyššie vám celú tabuľku delenia vypíše po kliknutí na Bin v postupe.
Ako previesť dvojkové číslo na desiatkové?
Každú číslicu vynásobíme mocninou dvoch podľa jej pozície sprava (2⁰ = 1, 2¹ = 2, 2² = 4…) a sčítame. Pre 11001 to je 1·16 + 1·8 + 0·4 + 0·2 + 1·1 = 25. Stačí teda sčítať mocniny dvoch na pozíciách, kde je jednotka.
Čo znamená 0x, 0b alebo 0o pred číslom?
Sú to predpony z programovania, ktoré určujú sústavu: 0x je šestnástková (0xFF = 255), 0b dvojková (0b1010 = 10) a 0o osmičková (0o755 = 493). V matematike sa sústava píše dolným indexom – 1010₂ alebo (1010)₂, FF₁₆. Prevodník rozumie obom zápisom a sústavu podľa nich nastaví sám.
Ako previesť hex na desiatkové číslo (hex to decimal)?
Písmená A – F majú hodnoty 10 – 15. Každú číslicu vynásobíme mocninou šestnástich podľa pozície a sčítame: FF = 15·16 + 15·1 = 255, 1A3 = 1·256 + 10·16 + 3·1 = 419. Opačne (decimal to hex) číslo delíme šestnástimi so zvyškami, zvyšky 10 – 15 zapíšeme písmenami.
Koľko je 11111111 v desiatkovej sústave a prečo sa 255 stále opakuje?
11111111 je 255 – najväčšie číslo, ktoré sa zmestí do jedného bajtu (8 bitov). Preto majú farby RGB zložky 0 – 255, IP adresy štyri čísla do 255 a šestnástkový zápis bajtu dve číslice 00 – FF. Do 16 bitov sa zmestí 65 535, do 32 bitov 4 294 967 295.
Na čo slúži osmičková sústava?
Osmičková sústava má číslice 0 – 7 a jedna osmičková číslica zodpovedá presne trom bitom. Najčastejšie ju stretnete pri právach súborov v Linuxe: chmod 755 znamená rwxr-xr-x, lebo 7 = 111, 5 = 101. V Pythone a JavaScripte ju označuje predpona 0o, v jazyku C samotná nula na začiatku (0755).
Zvládne prevodník záporné, desatinné a veľké čísla?
Áno. Záporné číslo zapíšte s mínusom – okrem bežného zápisu ukážeme aj dvojkový doplnok (two’s complement) v 8, 16, 32 a 64 bitoch, teda zápis, aký používajú procesory; naopak 8-, 16-, 32- či 64-bitové dvojkové číslo prečíta aj ako číslo so znamienkom. Desatinnú časť prevedie presne násobením základom (0,625 = 0,101₂) a pri nekonečnom zápise ukáže periódu: 0,1 = 0,0(0011)₂, čiže 0011 sa opakuje donekonečna. Celé čísla môžu mať tisíce číslic – počíta sa bez obmedzenia bežnej presnosti.
Ako prevediem text na binárny kód?
Text sa do dvojkovej sústavy prevádza po znakoch cez ich kódy – A má kód 65, teda 01000001. Tento prevodník pracuje s číslami; text na binárny kód, hex alebo späť prevedie naša ASCII tabuľka, ktorá zvládne aj slovenskú diakritiku v UTF-8.
Je prevodník zadarmo a bezpečný?
Áno. Všetko sa počíta vo vašom prehliadači – zadané čísla sa nikam neodosielajú ani neukladajú. Nástroj funguje aj bez pripojenia na internet, po načítaní stránky.
Pracujete s kódmi znakov? Vyskúšajte aj ASCII tabuľku a Base64 dekóder.