Table of Contents

Číselné soustavy

Číselné soustavy se v digitální technice používají pro reprezentaci a zpracování informací. Nejčastěji se setkáváme s těmito soustavami:

Základní přehled

Soustava Základ Používané symboly
Binární 2 0, 1
Desítková 10 0–9
Hexadecimální 16 0–9, A–F

Převody mezi soustavami

Binární → Desítková

Každá číslice (bit) má váhu mocniny 2:

Např.:

Desítková → Binární

Postupné dělení dvěma:

Výsledek čteme odzadu:

Binární ↔ Hexadecimální

Převod probíhá po čtveřicích bitů:

Bin Hex Bin Hex
0000 0 1000 8
0001 1 1001 9
0010 2 1010 A
0011 3 1011 B
0100 4 1100 C
0101 5 1101 D
0110 6 1110 E
0111 7 1111 F

Např.:

Záporná čísla

Záporná čísla se v digitální technice reprezentují pomocí dvojkového doplňku.

Postup:

1. zapíšeme číslo v binární podobě  
2. invertujeme bity (0 ↔ 1)  
3. přičteme 1  

Např.:

BCD kód

BCD (Binary Coded Decimal) reprezentuje každou desítkovou číslici samostatně pomocí 4 bitů.

Dec BCD
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001

Použití:

Přetečení (overflow)

K přetečení dochází, pokud výsledek operace nelze reprezentovat daným počtem bitů.

Např. pro 4 bity:

Přebytečná „jednička“ vlevo představuje tzv. příznak přenosu (carry).

Tento příznak:

Carry vs. Overflow

V digitálních systémech je důležité rozlišovat dva různé příznaky:

Carry (C)

Overflow (V)

Příklad (4 bity, signed):

Rychlé tipy

Zápis čísel v jazyce C

V programovacím jazyce C lze zapisovat čísla v různých soustavách pomocí specifických prefixů:

Soustava Zápis v C Příklad Hodnota
Desítková bez prefixu 10 10
Binární1) 0b 0b1010 10
Hexadecimální 0x 0x0A 10

Příklady

int a = 10;      // desítkově
int b = 0b1010;  // binárně
int d = 0xA;     // hexadecimálně

1)
Binární zápis (0b…) není součástí standardu jazyka C. Je podporován pouze některými překladači (např. GCC, Clang) jako rozšíření. V přenosném C se proto používá hexadecimální zápis (0x…) nebo bitové operace.