Počítáme desítkové soustavě, protože máme deset prstů. Dříve se počítalo i v jiných soustavách. Užívala se dvanáctková soustava ( tucet, kopa).
V dobách, kdy byly počítače pomalé, bylo pro hodnocení číselných soustav důležité, jak pracně se získávají číselné obrazy (tj. převod do číselné soustavy) a jak pracně se číselné obrazy zpracovávají (tj. náročnost základních početních operací). U počítačů pro vědecko-technické výpočty převládaly výpočty nad prováděním V/V operací. Výpočty jsou charakterizovány velkým množstvím základních početních operací, V/V operace naopak velkým množstvím převodů mezi číselnými soustavami. Proto pro počítače pro vědecko-technické výpočty bylo vhodnější použít takovou číselnou soustavu, ve které se jednodušeji zpracovávají početní operace. U počítačů pro hromadné zpracování dat (volby, statistika apod.) tomu bylo obráceně. Dnes jsou rozdíly setřeny./p>
Nejznámější polyadickou soustavou je soustava desítková. Číslo se v ní vyjadřuje jako součet mocnin deseti vynásobených jednoduchými součiniteli. Součinitelé mohou nabýt některé z hodnot 0,1,...,9 a nazývají se číslice. Číslo A lze tedy napsat
A=an.10n + an-1.10n-1 + ...... + ai.10i + ..... + a1.101 + a0.100
Běžná je zhuštěná forma zápisu.
A= anan-1 ... ai ... a1a0
Takto lze vyjádřit všechna čísla celá nezáporná. Potřebujeme-li zobecnit na racionální čísla, zavedeme záporné mocniny až do řádu m. Vyjádření pak změníme na
A=an.10n + ... + a1.101 + a0.100 + a-1.10-1 + a-2.10-2 + ... + a-m.10-m
a číslo pak zapisujeme stručně. Takto lze vyjádřit většinu racionálních čísel. Existují však racionální čísla, která lze přesně vyjádřit jen nekonečným periodickým výrazem. Připustíme-li růst donekonečna, připustíme tím i vyjádření čísel iracionálních. Jednoznačnost je zde zachována s výjimkou případů, kdy vyjádření čísla končí nenulovou číslicí, následovanou nekonečnou řadou nul. Pak lze ve vyjádření nahradit nenulovou číslici číslicí o jedničku nižší a řadu nul nahradit nekonečnou řadou devítek. Tak vznikne druhé vyjádření téhož čísla. Tento jev by mohl být považován z hlediska počítačů za nezajímavý vzhledem k tomu, že délka čísla, zobrazeného v počítači, musí být vždy konečná. Avšak při algoritmu dělení se postupně získávají číslice podílu a proces sám o sobě nikdy nekončí. Je ho třeba zakončit uměle. Tehdy by se mohlo stát, že např. celočíselný podíl bude vyjádřen druhým způsobem (ovšem ne v nekonečném tvaru).
Zobecnění na záporná čísla
zařazením znaménka před číslo je
vhodné pro lidské chápání,
nikoli však pro počítač. Při zobecnění
pro jiný základ získáme např.
při z=2 dvojkovou -
binární soustavu (vhodná pro
vědecko-technické výpočty), při z=8
osmičkovou - oktalovou soustavu,
při z=16
šestnáctkovou - hexadecimální soustavu.
V šestnáctkové soustavě se
číslice 10 až 15 pro přehlednost nahrazují znaky A až F.
Číslo v soustavě o základu zk (kde z a k jsou přirozená čísla) lze převést do soustavy o základu z jednoduše tak, že každou k-tici číslic nižší soustavy nahradíme číslicí soustavy vyšší.
Jednoduše lze převádět mezi soustavou dvojkovou a osmičkovou nebo mezi dvojkovou a šestnáctkovou; jednoduše nelze převádět např. mezi dvojkovou a desítkovou. Uveďme příklad převodu čísla z dvojkové soustavy do šestnáctkové:
0011 1011 01002 = 3B416
Zpětný převod do dvojkové soustavy probíhá tak, že každou číslici šestnáctkové soustavy převedeme na čtveřici číslic dvojkové soustavy
Soustavy
užívané v počítačové praxi
|
z = 2 |
z = 8 |
z = 16 |
|
dvojková 0,1 |
osmičková 0,1,2,3,4,5,6,7 |
šestnáctková 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F |
|
desítkově |
dvojkově |
osmičkově |
šestnáctkově |
|
|
|
|
|
|
0 |
00 00 00 |
0 |
0 |
|
1 |
00 00 01 |
1 |
1 |
|
2 |
10 |
2 |
2 |
|
3 |
11 |
3 |
3 |
|
4 |
1 00 |
4 |
4 |
|
5 |
1 01 |
5 |
5 |
|
6 |
1 10 |
6 |
6 |
|
7 |
1 11 |
7 |
7 |
|
8 |
10 00 |
10 |
8 |
|
9 |
10 01 |
11 |
9 |
|
10 |
10 10 |
12 |
A |
|
11 |
10 11 |
13 |
B |
|
12 |
11 00 |
14 |
C |
|
13 |
11 01 |
15 |
D |
|
14 |
11 10 |
16 |
E |
|
15 |
11 11 |
17 |
F |
|
16 |
1 00 00 |
20 |
10 |
|
17 |
1 00 01 |
21 |
11 |
|
. |
|||
|
32 |
100000 |
40 |
20 |
Převody mezi
soustavami
Číslo
v soustavě o základu zk
(kde z a k jsou přirozená čísla) lze převést
do soustavy o základu
z jednoduše
2 <=>
8 ale ne 8
<=> 16
2 <=> 16 ale ne 2
<=> 10
Každou k-tici číslic nižší
soustavy nahradíme číslicí soustavy
vyšší.
_____________________________________________________________________________________________________
Př.
Převeďte
číslo 4678 do šestnáctkové
soustavy.
Řešení: Využijeme předchozí vlastnost pro převod
soustav o základu 2n.
Takže 4678=100 110 1112 (sdružíme po
čtveřici bitů).
1 0011 01112=13716
_____________________________________________________________________________________________________
Zobrazení
celého čísla v počítači v
binárním tvaru
1. Převod
čísla v desítkové soustavě do dvojkové
soustavy
|
34 |
2 |
|
17 |
0 |
|
8 |
1 |
|
4 |
0 |
|
2 |
0 |
|
1 |
0 |
|
0 |
1
|
Číslo zapisujeme od spodu nahoru. 3410=1000102
2. Převod
čísla ve dvojkové soustavě do desítkové
soustavy
1100112=1*25+1*24+0*23+0*22+1*21+1*20=
32+16+2+1=5110
3. Převod
reálného čísla do dvojkové soustavy (12,6810=
? 2)
Víme, že 1210=11002. A dále:
|
0 |
68 |
|
1 |
36 |
|
0 |
72 |
|
1 |
44 |
|
0 |
88 |
|
1 |
76 |
|
1 |
52 |
|
… |
… |
|
… |
… |
Tedy 12,6810=1100,101011…2
______________________________________________________________________________________________________
Zobrazení
kladných čísel:
rozsah zobrazení pro n-bitů <0, 2n-1-1>
pro n=8 <0, 127>
Aritmetika
1
1
1 0
+1 1
1
1
1
1 0 0
+11 1 0+11
0 modře
je označen přenos
1 0 0 1 1
1 0 1 1 0 1
Přetečení =
výsledek operace spadá mimo
rozsah zobrazení (jednoduše řečeno: nemůžu rozumně
sčítat
__________________________________________________________________________________________________________
Zobrazení
záporných čísel:
Zavedeme
znaménkový bit (bit nejvíce vlevo):
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
znaménkový |
|
|
|
|
|
|
|
· přímý
kód : rozsah
zobrazení <-2n-1+1,
-0>
pro n=8 <-127, -0>, <+0, +127> přidání
znaménkového bitu
Aritmetika:
-3 1 0 1 1
-3
1 0
1 1
0 1 0 1 1 0
-3 1 0 1 1
+3
0 0 1 1
0 1 1 1 0
· inverzní
kód : inverze bitů (jedničkový doplněk)
0 0 0 1 0 1 provedeme inverzi všech bitů včetně znaménkového
1
1 1 0
1
0 toto je číslo
-5
v inverzním kódu na šesti bytech
1 0 1 1 0 1
0 1 0 0 1 0 jednalo se o číslo -18
Jak to je s aritmetikou?
-4 1 1 0 1 1
5
0 0 1 0 1
1 =? 1 0 0 0 0 0
+ 1 (kruhový přenos)
0 0 0 0 1
Součet v inverzním kódu
problém dvou nul
nutnost provádět tzv. kruhový přenos = přičtení přenosu z nejvyššího řádu k výsledku
Kladná nula: 0 0 0 0 0
Záporná nula: 1 1 1 1 1
Nelze rozumně
provádět
aritmetika.
Př. Zobrazme číslo -9 ve dvojkovém doplňkovém kódu (na šesti bitech)
0 1 0 0 0 1
1 0 1 1 1 0 převedeme do inverzního kódu
+ 1 přičteme jedničku
0 0 1 1 1 1
Př. Urči jaké číslo je zobrazeno ve dvojkovém doplňkovém kódu
1 0 1 1 0 1
0 1 0 0 1 0 inverze všech bitů včetně znaménkového
+
1 přičtení
jedničky
0 1 0 0 1 1 jednalo se o číslo -11
Součet v
doplňkovém kódu
Jedno číslo
k sobě nemá absolutní hodnotu:
1 0 0 0 0 0
0 1+11+11+11+11
+ 1
1 0 0 0 0 0 jaké je to číslo?
Je to číslo záporné. Zkusme jej o jedničku zvětšit a zjistit jaké je toto číslo o jedničku zvětšené.
1 0 0 0 0 0
+
1
1 0 0 0 0 1
zjistíme jaké je to číslo
0 1 1 1 1 0
+
1
0 1 1 1 1 1
je to číslo – MAXX ( záleží na
kolika bitech zobrazujeme)
Tedy rozsah
zobrazení na 8 bitech v dvojkovém
doplňkovém kódu je: <- 128, 127 >
Aritmetika
ve dvojkových kódech
Součet v
doplňkovém kódu