N-AP6

Zadání

Číselné soustavy, vztahy mezi číselnými soustavami, zobrazení čísel v počítači, principy provádění aritmetických operací.

Číselné soustavy

Čí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.

Nepoziční číselná soustava

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.

Poziční číselné soustavy

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

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

Vztahy mezi číselnými soustavami

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 ←→ 88 ←/→ 16
2 ←→ 162 ←/→ 10

Každou k-tici číslic nižší soustavy nahradíme číslici soustavy vyšší. Např. 0011 1011 01002 = 3B416

Převod 2 → 8

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

Převod 2 → 16

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

Převod 8 → 2

Číslo se jednoduše převede podle zmíněných tabulek.

Převod 16 → 2

Číslo se jednoduše převede podle zmíněných tabulek po jednotlivých pozicích.

Převod 2 → 10

Čí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 10 → 2

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

Zobrazení čísel v počítači

Čí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)

1) Zobrazení kladných čísel

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

0000 0
0001 1
1000 8
1001 9
1111 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)

2) Zobrazení záporných čísel

  • Přímý kód – jen přidání znaménkového bitu, nevýhodou je záporná nula
  • Inverzní kód – obrácení jedniček a nul
  • Dvojkový doplňkový kód – obrácení jedniček a nul + přičtení jedničky

a) Přímý kód se znaménkem

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

b) Inverzní kód

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

c) Doplňkový kód

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

d) Kód s posunutou nulou

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)

3) Zobrazení reálných čísel

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 · zE, 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

  • kladné číslo má znaménkový bit nulový, u záporného čísla je tento bit jedničkový

Exponent

  • je uložen na 8 bitech v kódu s posunutou nulou, báze posunutí je 27 - 1 = 127
  • příklad: exponent 410 je uložen jako 4 + 127 = 131 = 1000 00112

Mantisa

  • je znázorněna 23 bity v přímém kódu
  • první bit (na nulté desetinné pozici) se neukládá, bere se implicitně jako 1 (mantisa se tedy ukládá počínaje druhým bitem)
  • myšlená desetinná tečka je umístěna za nejvyšším bitem mantisy
  • příklad: mantisa 1,562510 je desetinné číslo 1 + 0,5 + 0,0625 = 20 + 2-1 + 2-4 = 1,10012 a uloží se jako 100 1000 0000 0000 0000 0000

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

Principy provádění aritmetických operací

Předměty

PB151 Výpočetní systémy

Použitá literatura a weby

Vypracoval

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

, 2013/02/05 20:58

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

, 2013/02/13 10:42

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.

You could leave a comment if you were logged in.
mgr-szz/ap-ap/6-obr.txt · Poslední úprava: 2020/04/12 16:56 (upraveno mimo DokuWiki)
Nahoru
CC Attribution-Noncommercial-Share Alike 4.0 International
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0