Číselné soustavy, vztahy mezi číselnými soustavami, zobrazení čísel v počítači, principy provádění aritmetických operací.
Číselná soustava je způsob reprezentace čísel.
Podle způsobu určení hodnoty čísla z dané reprezentace rozlišujeme dva hlavní druhy číselných soustav: poziční číselné soustavy a nepoziční číselné soustavy. Dnes se obvykle používají poziční soustavy, kde se čísla vyjadřují jako součet mocnin o jistém základu násobených jednoduchými činiteli.
je způsob reprezentace čísel, kde hodnota číslice je dána jejím symbolem a nezávisí na její pozici v zapsaném čísle. Tyto způsoby zápisu čísel se dnes již téměř nepoužívají a jsou považovány za zastaralé.
V nejjednodušším systému stačí sečíst hodnoty jednotlivých číslic. Pokud by například byly hodnoty symbolů následující: A = 1, B = 10, C = 100, D = 1000, pak by vyjádřením čísla 3542 mohl být například řetězec „AABBBBCCCCCDDD“.
Příkladem nepoziční soustavy jsou Římské číslice. http://cs.wikipedia.org/wiki/Ř%C3%ADmské_č%C3%ADslice.
je dnes převládající způsob písemné reprezentace čísel – dokonce, pokud se dnes mluví o číselných soustavách, jsou tím obvykle myšleny soustavy poziční. V tomto způsobu zápisu čísel je hodnota každé číslice dána její pozicí v sekvenci symbolů. Každá číslice má touto pozicí dánu svou váhu pro výpočet celkové hodnoty čísla.
Nejznámější soustavou je soustava desítková, kde se číslo vyjadřuje jako součet mocnin deseti vynásobených jednoduchými součiniteli. Součinitelé mohou nabývat hodnot 0,1,…,9 a nazývají se číslice.
Pro zobrazení v počítači jsou vhodnější soustavy o jiných základech např. dvojková, šestnáctková (zde se číslice 10…15 nazývají písmeny A..F) nebo osmičková.
Polyadické soustavy jsou speciálním případem pozičních soustav.
Základ – počet symbolů pro číslice používaných v dané soustavě
Řád -– váha číslice
zápis
číslo = součet mocnin základu vynásobených číslicemi
A = an · zn + an−1 · zn−1 + · · · + a1 · z1 + a0 · z0
A = 1 · 102 + 2 · 101 + 3 · 100
zhuštěný zápis
běžná je forma zhuštěného zápisu:
A = anan−1 . . . a1a0
A = 123
A = 12310
• Zobecnění pro racionální číslo (zavedeme záporné mocniny): A = an · zn +· · ·+a0 · z0 +a−1 · z−1 +a−2 · z−2 +· · ·+a−m · z−m
• Zobecnění pro záporná čísla – přidáním znaménka (pro počítače nevhodné)
• Zobecnění pro komplexní čísla – zavedením imaginární jednotky
Příklad číselné soustavy se základem 2 (tj. dvě číslice 1,0) a výpočet jeho hodnoty:
(10010)2 = 0 · 20 + 1 · 21 + 0 · 22 + 0 · 23 + 1 ·24
Jednoduše lze převádět mezi soustavami, kde základ jedné soustavy tvoří základ mocniny druhé. Např. mezi dvojkovou, osmičkovou a šestnáctkovou soustavou. Čí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.
Převody:
2 ←→ 8 | 8 ←/→ 16 |
2 ←→ 16 | 2 ←/→ 10 |
Každou k-tici číslic nižší soustavy nahradíme číslici soustavy vyšší. Např. 0011 1011 01002 = 3B416
Například pro číslo 1110101102=?8.
Vytvoří se pomocná tabulka:
0 | 0 |
1 | 1 |
2 | 10 |
3 | 11 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
A s ní se číslo převede 1112 ~ 78 | 0102 ~ 28 | 1102 ~ 68 == 7268
Například pro číslo 1110010111012=?16.
Vytvoří se pomocná tabulka:
0 | 0 |
1 | 1 |
2 | 10 |
3 | 11 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
8 | 1000 |
9 | 1001 |
A | 1010 |
B | 1011 |
C | 1100 |
D | 1101 |
E | 1110 |
F | 1111 |
A s ní se číslo převede 11102 ~ E16 | 01012 ~ 516 | 11012 ~ D16 == E5D16
Číslo se jednoduše převede podle zmíněných tabulek.
Číslo se jednoduše převede podle zmíněných tabulek po jednotlivých pozicích.
Číslo lze převést jako součet mocnin dvojek.
Například pro číslo 1100,00110011002 = ?10
Celá část:
1 · 23 + 1 · 22 + 0 · 21 + 0 · 20 = 1 · 8 + 1 · 4 + 0 · 2 + 0 · 1 = 12
Desetinná část:
0 · 2−1 + 0 · 2−2 + 1 · 2−3 + 1 · 2−4 + 0 · 2−5 + 0 · 2−6 + 1 · 2−7 + 1 · 2−8 + … = 0 · 0,5 + 0 · 0,25 + 1 · 0,125 + 1 · 0,0625 + … = 0,19999…
Rešení: zaokrouhlení dle poslední číslice rozvoje.
Převod se provede jako dělení se zbytkem.
Například pro číslo 12,210 = ?2
Celá část:
12 | : 2 |
6 | 0 |
3 | 0 |
1 | 1 |
0 | 1 |
Desetinná část:
0, | 2 | · 2 |
0, | 4 | · 2 |
0, | 8 | · 2 |
1, | 6 | (0,6 · 2) |
1, | 2 | (0,2 · 2) |
0, | 4 | · 2 |
0, | 8 | · 2 |
1, | 6 | · 2 |
. . . | . . . |
12,210 = 1100,0011001…2 (výsledek celé části se čte od konce.)
Čísla se mohou v paměti počítače v binárním tvaru zobrazovat buď jako:
• Little endian – LSB je na nejnižší adrese (little end first).
• Big endian – MSB je nejnižší adrese (big end first).
(LSB – Least Significant Byte, MSB – Most Significant Byte)
Rozsah zobrazení bez použití znaménkového bitu je < 0; 2n − 1 >, kde n je počet bitů.
Zobrazení např. na 4 bitech (n = 4):
0 | 0 | 0 | 0 | 0 | |
0 | 0 | 0 | 1 | 1 | |
1 | 0 | 0 | 0 | 8 | |
1 | 0 | 0 | 1 | 9 | |
1 | 1 | 1 | 1 | 15 |
rozsah zobrazení při použití znaménkového bitu: < -2n-1; 2n-1 − 1 >
Například pro 16-bitový integer je rozsah (-32768, 32767)
První bit určuje kladnost (0), respektive zápornost (1) čísla
rozsah zobrazení je < -2n-1+1;-0 >
pozor! existence dvou nul → -0 a 0
rozsah zobrazení je < -2n-1+ 1;-0 >
první bit tedy určuje zápornost
záporná čísla se invertují, tedy:
pozor! existence dvou nul → -0 a 0
rozsah zobrazení je < -2n-1; 2n-1-1>
Pro zápis kladného čísla jen převedeme číslo do dvojkové soustavy stejně, jako číslo bez znaménka.
U doplňkového kódu vyřešen problém dvou nul.
Postup pro zobrazování záporných čísel v doplňkovém kódu:
1. zobrazit kladné číslo v binární soustavě
2. prohodit 1 a 0 v zápise binárního čísla (udělat inverzi čísla)
3. přičíst 1
V kódu s posunutou nulou využíváme bázi posunutí (standardně 27 - 1). K této bázi přičteme požadované číslo a výsledek zobrazíme. PRIKLAD: číslo (55) zobrazte na 8 bitů: 2^7 - 1 +55 = 128 - 1 + 55 = 182 = =(10110110) analogicky záporné číslo (-55) na 8 bitů: 2^7 - 1 -55 = 128 - 1 - 55 = 72 = (1001000)
Zobrazení reálných nebo příliš velkých celých čísel se provádí v pohyblivé řádové čárce. Čísla jsou zobrazena ve tvaru:
č = M
· z
E
, kde
M
… mantisa čísla, zobrazená v soustavě o základu z
E
… exponent z
… základ pro výpočet exponentové části
Jedním z používaných formátů pro zobrazení čísel v pohyblivé řádové čárce je formát podle standardu IEEE 754 (Institute of Electrical and Electronic Engineers) používaný v moderních počítačích.
Struktura čísla:
znaménkový bit (1 b) | exponent (8 b) | mantisa (23 b) |
Znaménkový bit
Exponent
Mantisa
Příklad Zobrazte číslo (-258,125)10 ve formátu IEEE (na 4 bytech):
(258)10 = (100000010)2 0,125 · 2 = 0,25 0 0,25 · 2 = 0,5 0 0,5 · 2 = 1,0 1 (0,125)10 = (0,001)2
(258,125)10 = (100000010,001)2
Nyní je nutné provést normalizaci – pomocí násobku čísla s mocninami dvojky číslo převést do intervalu [1, 2):
nenormalizované = normalizované · 2n, kde n je hledaná mocnina.
norm. tvar: 1,00000010001 · 28 exponent: 27 - 1 + 8 = 27 + 7 = 10000000 + 111 = (10000111)
Jelikož se předpokládá normální tvar, jednotka na místě před desetinou čárkou se nezapisuje:
(-258,125)10 = (1100 0011 10000 0010 0010 0000 0000 000)IEEE
Příklad převodu čísla -118.625
1. Nejprve vezmeme znaménko, tj. první bit bude „1“
2. Zapíšeme číslo v binární podobě. 1110110.101.
3. Posuneme desetinnou čárku. 1.110110101 x 26
4. Mantisa je část za desetinnou čárkou a vyplní se nulami až se dostane celých 23 bitů
5. Exponent je 6. Nejdřív se přičte 127 a zkonverujte na binární formu: 6 + 127 = 133 10000101
6. Vznikne číslo: 1 1000 0101 1101 1010 1000 0000 0000 000
PB151 Výpočetní systémy
http://statnice.dqd.cz/home:prog:ap1 IEEE convertor: http://babbage.cs.qc.cuny.edu/IEEE-754.old/Decimal.html
Marek Menšík UČO 255679
Z mě strany hotovo
Nevím přesně, kdo otázky zpracoval přede mnou, pouze jsem je sem umístil, doplnil chybějící věci a opravil nepřesnosti. Připomínám, že věci zde uvedené nemusí být korektní a zatím neprošly kontrolou zádného z profesorů.
Diskuze
Je tohle spravne?
(-258,125)_10 = (1100 0011 1100 1000 0000 0000 0000 0000)_IEEE
Spis mi to vychazi:
(-258,125)_10 = (1100 0011 1000 0001 0001 0000 0000 0000)_IEEE
Ano, tvuv vysledek je skutecne spravne.
Jinak u statnic se ptali na scitani v inverznim a dvojkovem kode a chteli nakreslit scitacku. To tady chybi.