Clever Quest Lab ← Informatika · 1. ročník SŠ
Informatika1. ročník SŠČíselné sústavy

Číselné sústavy

To isté číslo sa dá zapísať rôznymi spôsobmi. Ľudia počítajú v desiatkovej sústave, počítače v dvojkovej a programátori si dlhé rady núl a jednotiek skracujú šestnástkovou. Tu sa naučíš, ako pozičné sústavy fungujú, ako medzi nimi prevádzať čísla a ako počítač zapisuje záporné čísla.

Pozičná číselná sústava

V pozičnej číselnej sústave závisí hodnota číslice od miesta (rádu), na ktorom v čísle stojí. V čísle 505 znamená ľavá päťka päť stoviek, pravá len päť jednotiek. Rímske číslice pozičnou sústavou nie sú — znak X má hodnotu desať, nech stojí kdekoľvek.

Každú pozičnú sústavu určuje jej základ z (prirodzené číslo väčšie ako 1):

(an … a1a0)z = an · zn + … + a1 · z1 + a0 · z0

Každé nenulové číslo umocnené na nultú je 1 (z0 = 1), preto má rád úplne vpravo vždy váhu 1. Ak si potrebuješ zopakovať mocniny, pozri tému Mocniny a odmocniny.

Desiatková sústava ako známy príklad

Desiatková (dekadická) sústava má základ 10, číslice 0 až 9 a váhy rádov 1, 10, 100, 1000, … Rozvinutý zápis čísla 2705:

2705 = 2 · 103 + 7 · 102 + 0 · 101 + 5 · 100

Rád3210
Mocnina103102101100
Váha1000100101
Číslica2705
Súčin200070005

Súčet súčinov: 2000 + 700 + 0 + 5 = 2705.

Aby bolo jasné, v ktorej sústave je číslo zapísané, píšeme základ ako dolný index: 10112, 2348, 15610, 9C16. Číslo bez indexu je v desiatkovej sústave.

Dvojková, osmičková a šestnástková sústava

V informatike sa popri desiatkovej sústave používajú najmä tri ďalšie:

SústavaZákladČísliceVáhy rádov (sprava)
dvojková (binárna)20, 11, 2, 4, 8, 16, …
osmičková (oktálová)80 až 71, 8, 64, 512, …
desiatková (dekadická)100 až 91, 10, 100, 1000, …
šestnástková (hexadecimálna)160 až 9, A až F1, 16, 256, 4096, …

Šestnástková sústava potrebuje 16 číslic, preto po deviatke pokračuje písmenami: A = 10, B = 11, C = 12, D = 13, E = 14, F = 15.

Prečo počítače pracujú v dvojkovej sústave

Elektronické súčiastky počítača (tranzistory) spoľahlivo rozlíšia dva stavy: vyššie a nižšie napätie, zapnuté a vypnuté. Dva stavy stačia práve na dve číslice, 0 a 1. Keby mal obvod rozlišovať desať úrovní napätia, stačilo by malé rušenie a číslica by sa prečítala nesprávne. Preto sú všetky údaje v počítači — čísla, texty, obrázky aj zvuk — uložené ako rady núl a jednotiek.

Bit a bajt

Bit (z anglického binary digit, značka b) je jedna dvojková číslica, teda 0 alebo 1. Je to najmenšia jednotka informácie. Osem bitov tvorí bajt (značka B).

Každý pridaný bit zdvojnásobí počet možností, preto n bitmi zapíšeme 2n rôznych hodnôt — čísla od 0 po 2n − 1.

Počet bitov nPočet hodnôt 2nNajväčšie číslo
121
243
387
41615
8256255
1665 53665 535
324 294 967 2964 294 967 295

Jeden bajt má teda 28 = 256 hodnôt a zapíšeme ním čísla 0 až 255.

Čísla 0 až 15 v štyroch sústavách

Dvojkové zápisy sú dlhé a ľahko sa v nich pomýlime. Osmičková a šestnástková sústava slúžia ako ich skrátený zápis — prečo to ide tak ľahko, uvidíš pri rýchlych prevodoch. Dvojkové čísla sú v tabuľke doplnené nulami na štyri bity. Stĺpce dvojkovej a šestnástkovej sústavy sa oplatí vedieť naspamäť.

10desiatková2dvojková8osmičková16šestnástková
0000000
1000111
2001022
3001133
4010044
5010155
6011066
7011177
10desiatková2dvojková8osmičková16šestnástková
81000108
91001119
10101012A
11101113B
12110014C
13110115D
14111016E
15111117F

Prevod z desiatkovej sústavy: postupné delenie

Číslo z desiatkovej sústavy prevedieme do sústavy so základom z postupným delením:

  1. Číslo vydeľ základom z a zapíš podiel aj zvyšok.
  2. Podiel znova vydeľ základom. Opakuj, kým podiel nie je 0.
  3. Zvyšky prečítaj odspodu nahor (od posledného k prvému). Sú to číslice výsledku.

Prečo odspodu? Prvý zvyšok hovorí, koľko jednotiek zostalo po rozdelení čísla do skupín po z — je to číslica najnižšieho rádu. Každé ďalšie delenie dáva číslicu o rád vyššie, takže posledný zvyšok je číslica úplne vľavo.

Prevod čísla 45 do dvojkovej sústavy:

↑ Zvyšky čítame odspodu nahor: 1, 0, 1, 1, 0, 1.
DelenecPodiel (: 2)Zvyšok
45221
22110
1151
521
210
101

Výsledok: 4510 = 10 11012. Dlhšie dvojkové čísla píšeme pre prehľadnosť v skupinách po štyroch bitoch, počítaných sprava.

Pri prevode do šestnástkovej sústavy delíme číslom 16 a zvyšky 10 až 15 zapíšeme písmenami A až F. Napríklad pre číslo 500: 500 : 16 = 31, zvyšok 4; 31 : 16 = 1, zvyšok 15 (F); 1 : 16 = 0, zvyšok 1. Zvyšky odspodu sú 1, F, 4, teda 50010 = 1F416.

Prevod do desiatkovej sústavy: rozvinutý zápis

Opačným smerom stačí napísať rozvinutý zápis: každú číslicu vynásobíme váhou jej rádu a súčiny sčítame.

10112 = 1 · 23 + 0 · 22 + 1 · 21 + 1 · 20 = 8 + 0 + 2 + 1 = 1110

Rád3210
Mocnina23222120
Váha8421
Číslica1011
Súčin8021

Rovnako v ostatných sústavách — šestnástkové písmená len nahradíme ich hodnotou (F = 15):

7F16 = 7 · 161 + 15 · 160 = 112 + 15 = 12710

7778 = 7 · 82 + 7 · 81 + 7 · 80 = 448 + 56 + 7 = 51110

V dvojkovej sústave je to obzvlášť jednoduché: stačí sčítať váhy tých rádov, v ktorých je číslica 1.

Rýchle prevody medzi sústavami 2, 8 a 16

Keďže 8 = 23 a 16 = 24, medzi týmito sústavami netreba prevádzať cez desiatkovú:

Z dvojkovej sústavy

Dvojkové číslo rozdelíme sprava na štvorice (pre šestnástkovú sústavu) alebo trojice (pre osmičkovú). Ak ľavej skupine chýbajú bity, doplníme zľava nuly. Každú skupinu potom nahradíme jednou číslicou. Pre číslo 10 1101 01112 (doplnené nuly sú podčiarknuté):

Štvorice dávajú 10 1101 01112 = 2D716. To isté číslo po trojiciach:

Trojice dávajú 10 1101 01112 = 13278.

Do dvojkovej sústavy

Opačne každú číslicu rozpíšeme na štvoricu (pri osmičkovej sústave trojicu) bitov — vždy na plný počet, aj s nulami na začiatku. Nuly na začiatku celého čísla napokon vynecháme.

Teda A316 = 1010 00112. Podobne 528: číslica 5 je 101 a číslica 2 je 010, spolu 10 10102.

Medzi osmičkovou a šestnástkovou sústavou prevádzame cez dvojkovú: číslice rozpíšeme na bity a tie preskupíme.

Prečo to funguje

Štvorica bitov má hodnotu od 00002 = 0 po 11112 = 15, teda presne toľko, koľko jedna šestnástková číslica. Váhy ďalšej štvorice (16, 32, 64, 128) sú šestnásťnásobkom váh prvej štvorice (1, 2, 4, 8). Celá štvorica sa preto násobí číslom 16 — rovnako ako ďalší rád v šestnástkovej sústave:

1001 11002 = (8 + 0 + 0 + 1) · 16 + (8 + 4 + 0 + 0) = 9 · 16 + 12 = 9C16

Pre trojice bitov a osmičkovú sústavu platí to isté, lebo 8 = 23.

Sčítanie v dvojkovej sústave

Dvojkové čísla sčítavame pod sebou ako desiatkové, len prenos do vyššieho rádu vzniká už pri súčte 2:

0 + 0 = 0,  0 + 1 = 1,  1 + 1 = 102,  1 + 1 + 1 = 112

Pri 1 + 1 teda píšeme 0 a prenášame 1. Pri 1 + 1 + 1 píšeme 1 a prenášame 1. Príklad 10112 + 01102:

váha168421
prenos111
1011
+0110
súčet10001

Výsledok je 1 00012. Skúška v desiatkovej sústave: 11 + 6 = 17 a 1 00012 = 16 + 1 = 17. Všimni si, že súčet má päť bitov, hoci sčítance mali len štyri.

Záporné čísla: dvojkový doplnok

Počítač nemá kam napísať znamienko mínus — aj záporné číslo musí uložiť len pomocou núl a jednotiek. Najčastejšie na to používa dvojkový doplnok (doplnkový kód) na pevnom počte bitov n, napríklad 8, 16 alebo 32.

Nezáporné číslo sa zapíše obyčajne dvojkovo a zľava sa doplní nulami na n bitov. Záporné číslo −x dostaneme v troch krokoch:

  1. zapíšeme x dvojkovo na n bitov,
  2. invertujeme všetky bity (z 0 urobíme 1 a z 1 urobíme 0),
  3. pripočítame 1.

Vlastnosti dvojkového doplnku na n bitoch:

Ten istý rad bitov môže znamenať dve rôzne čísla — podľa toho, či ho čítame ako číslo bez znamienka, alebo v dvojkovom doplnku:

8 bitovBez znamienkaV dvojkovom doplnku
0000 000000
0000 000111
0111 1111127127
1000 0000128−128
1000 0001129−127
1111 1011251−5
1111 1111255−1

Zápis v dvojkovom doplnku prečítame tak, že sčítame váhy jednotkových bitov a váhu najvyššieho bitu berieme zápornú: 1000 0001 je −128 + 1 = −127.

Pretečenie. Ak sa výsledok výpočtu do rozsahu nezmestí, nastane pretečenie (anglicky overflow): na 8 bitoch dá 127 + 1 rad 1000 0000, čo je v dvojkovom doplnku −128. Väčšina programovacích jazykov pritom žiadnu chybu neohlási — výsledok je jednoducho nesprávny.

Kde sa so sústavami stretneš

Riešené príklady

Príklad 1: Preveď číslo 15610 do dvojkovej sústavy.
  1. Číslo opakovane delíme dvoma a zapisujeme zvyšky:
    DelenecPodiel (: 2)Zvyšok
    156780
    78390
    39191
    1991
    941
    420
    210
    101
  2. Zvyšky prečítame odspodu nahor: 1 0 0 1 1 1 0 0
  3. Výsledok zapíšeme v skupinách po štyroch bitoch: 15610 = 1001 11002
  4. Skúška rozvinutým zápisom: 128 + 16 + 8 + 4 = 156 ✓
Príklad 2: Preveď číslo 1001 11002 do šestnástkovej a do osmičkovej sústavy.
  1. Šestnástková sústava: číslo rozdelíme sprava na štvorice a každú nahradíme jednou číslicou. 1001 11002 = 9C16
  2. Osmičková sústava: číslo rozdelíme sprava na trojice. Ľavej skupine chýba jeden bit, doplníme nulu. 1001 11002 = 2348
  3. Skúška prevodom do desiatkovej sústavy: 9 · 16 + 12 = 156, 2 · 64 + 3 · 8 + 4 = 156 ✓
Príklad 3: Zapíš číslo −5 v dvojkovom doplnku na 8 bitoch.
  1. Číslo 5 zapíšeme dvojkovo na 8 bitov: 0000 0101
  2. Invertujeme všetky bity: 1111 1010
  3. Pripočítame 1: 1111 1010 + 1 = 1111 1011
  4. Výsledok: −5 = 1111 10112 = FB16
  5. Skúška váhami bitov: −128 + 64 + 32 + 16 + 8 + 2 + 1 = −5 ✓

🧠 Zapamätaj si

Vyskúšaj si to — prevod medzi sústavami

Zadaj číslo a vyber sústavu, v ktorej je zapísané. Hneď uvidíš jeho zápis vo všetkých štyroch sústavách. Pod výsledkom si zvoľ cieľovú sústavu a zobrazí sa postup prevodu krok za krokom.

Šestnástkové číslice A až F môžeš písať aj malými písmenami. Medzery v čísle sa ignorujú.

Sústava, v ktorej je číslo zapísané
Ukáž postup prevodu do sústavy

Vyskúšaj si to — bity a dvojkový doplnok

Preklápaj bity a sleduj, aké číslo predstavujú — raz bez znamienka, raz v dvojkovom doplnku. Alebo zadaj celé číslo (aj záporné) a pozri si, ako vznikne jeho zápis.

Počet bitov

Bit preklopíš kliknutím alebo medzerníkom, klávesmi 0 a 1 ho nastavíš priamo a šípkami ← → prechádzaš medzi bitmi. Fialovo orámovaný najvyšší bit je znamienkový: v dvojkovom doplnku má váhu −128.

Pozri aj