Číselné soustavy - obecný úvod

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>

Polyadické soustavy

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.

Převody mezi polyadickými 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 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á
binární

0,1

osmičková
oktalová

0,1,2,3,4,5,6,7

šestnáctková
hexadecimální

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 5 a 10 na 3 bitech)

__________________________________________________________________________________________________________

Zobrazení záporných čísel:

Zavedeme znaménkový bit (bit nejvíce vlevo):

7

6

5

4

3

2

1

0

znaménkový
bit

 

 

 

 

 

 

 

 

·        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)

  1. Převod čísla do inverzního kódu (zobrazení čísla -5 na šesti bitech)

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. Zjištění o jaké jde číslo  (máme číslo v inverzním kódu a zjišťujeme hodnotu čísla)

            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.         

  1. Převod čísla do dvojkového doplňkového kódu

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


  1. Zjištění o jaké jde číslo

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