Základní pojmy
Při programování je třeba si uvědomit, že různé datové typy mají také různé rozsahy hodnot, tzn. různé dolní a horní meze. Při překročení rozsahu během aritmetických výpočtů mohou nastat různé problémy. Uvidíme, že reálná čísla jsou ukládána jen přibližně, což může mít vliv zejména na přesnost opakovaných výpočtů.
4. Typy dat
4.3. Aritmetika s celými čísly
Veškeré aritmetické operace jdou převést na sčítání.
Odečítání lze provést tak, že se v odečítateli změní znaménko (převede se do doplňkového kódu) a sečte se s odčítancem.
Násobení spočívá v kombinaci posouvání 1. násobitele vlevo podle 2. násobitele a sérii sčítání.
Dělení spočívá v odečítání a posouvání vpravo.
Víme, že při sčítání dvou číslic v desítkové soustavě zapisujeme při překročení devítky jen pravou číslici ze součtu do výsledku a levá jednička je tzv. přenos, který přičteme k dalším číslicím vlevo.
Např.:
2+ 2 = 4, přenos 0
7 + 8 = 5, přenos 1
Podobně ve dvojkové soustavě může být výsledkem sčítání dvou číslic - viz Tabulka 1.
|
Sčítanec a |
Sčítanec b |
Přenos |
Výsledek |
Výsledný přenos |
|
0 |
0 |
0 |
0 |
0 |
|
0 |
1 |
0 |
1 |
0 |
|
1 |
0 |
0 |
1 |
0 |
|
1 |
1 |
0 |
0 |
1 |
|
0 |
0 |
1 |
1 |
0 |
|
0 |
1 |
1 |
0 |
1 |
|
1 |
0 |
1 |
0 |
1 |
|
1 |
1 |
1 |
1 |
1 |
Tabulka 1: Přenos
Pozn.: Doplněk ke dvojkovému číslu lze rychle vytvořit tak, že se opisují číslice ( 0 ) zprava, tj. od nejnižšího řádu, tak dlouho, až se narazí na 1. jedničku, ta se rovněž opíše a pak se již zaměňují 0 za 1 a 1 za 0. Druhým způsobem je vytvořit inversní kód a k němu přičíst jedničku.
Pokud při aritmetické operaci je výsledek mimo rozsah zobrazitelný pro daný typ celého čísla, dojde k tzv. přetečení. Výsledkem sčítání dvou kladných čísel může být záporné číslo, neboť došlo k přetečení do znaménkového bitu.
Přetečení při sčítání 2 čísel:
(18 926)10 (0 100 100 111 101 110)2
(16 385)10 (0 100 000 000 000 001)2
-------------- ------------------------------------
(35 311)10 (1 000 100 111 101 111)2 = (-30 225)10 !!!