Převody mezi soustavami a matematické operace s binárními čísly
Zkratky: *a-rozsah, z-základ
Dvojková (Binární) číselná soustava
a = 0;1
z = 2
Osmičková (oktanová) soustava
a = 0-7
z = 8
Desítková (dekadická) soustava
a = 0-9
z = 10
Šestnácková (hexadecimální) soustava
a = 0-9;A-F
z = 16
Předpony
kilo 1kB = 1024B
Mega 1MB = 1024kB
Giga 1GB = 1024MB
Tera 1TB = 1024GB
Převody celých čísel z desítkové čís. soustavy do dvojkové a naopak
Číslo z desítkové soustavy do libovolné soustavy převedeme tak, že postupně dělíme desítkové číslo základem nové čísl. soustavy a sepisujeme zbytky. Poslední zbytek je nejvyššířád v nové čísl. soustavě
Př.
53D|:2 26 | 1 /\ 13 | 0 | 6 | 1 | 3 | 0 | 1 | 1 | 0 | 1 | 53D == 110101B
Zpětný převod
Při převodu z binární do desítkové soustavy násobíme jednotlivá čísla od zadu číslem vždy 2x větším než je předchozí počínaje jedničkou tzn. 1,2,4,8,16,32...
1*32 + 1*16 + 0*8 + 1*4 + 0*2 + 1*1 == 32 + 16 + 4 + 1 == 53D
Převod reálných čísel (desetinné části)
Převáděné desítkové číslo ostupně násobíme dvojkou celá část výsledku je první číslicí převedeného čísla zbytek za řádovou čárkou násobíme znovu dvojkou.
Př.
0,|333D *2 | 0 |666 | 1 |332 | 0 |664 | 1 |328 | 0 |656 \/ 1 |312 ......... 0,010101B
Převod z desítkové do osmičkové a naopak
535O
Skládáme váhy, které když sečteme dají maximální číslo v dané soustavě tzn. 1,2,4 (1+2+4 = 7) - to samé jako v předchozím příkladu jen s omezením na 'chlívečky'
4 2 1 | 4 2 1 | 4 2 1 --------------------- 1 0 1 | 0 1 1 | 1 0 1 (4*1 + 2*0 + 1*1 = 5 | 4*0 + 2*1 + 1*1 = 3 | 4*1 + 2*0 + 1*1 = 5 > 535O) == 101011101B Zpětný převod 4 2 1 | 4 2 1 | 4 2 1 --------------------- 1 0 1 | 0 1 1 | 1 0 1 4*1 + 2*0 + 1*1 = 5 | 4*0 + 2*1 + 1*1 = 3 | 4*1 + 2*0 + 1*1 = 5 > 535O
Převod z desítkové do šestnáctkové soustavy
Skládáme váhy, které když sečteme dají maximální číslo v dané soustavě tzn. 1,2,4,8 (1+2+4+8 = 15)
AB7H - musíte si uvědomit co jsou ta písmena A = 10, B = 11, C = 12...F = 15
8 4 2 1 | 8 4 2 1 | 8 4 2 1 1 0 1 0 | 1 0 1 1 | 0 1 1 1 (8*1 + 4*0 + 2*1 + 1*0 = 10(A) | 8*1 + 4*0 + 2*1 + 1*1 = 11(B) | 8*0 + 4*1 + 2*1 + 1*1 = 7 > AB7H) == 101010110111B Zpětný převod je snad jasný :)
Vzájemný převod mezi šestníctkovou a osmičkovou soustavou
7345O 4 2 1 | 4 2 1 | 4 2 1 | 4 2 1 1 1 1 | 0 1 1 | 1 0 0 | 1 0 1 Teď přehodíme váhy 4 2 1 4 | 2 1 4 2 | 1 4 2 1 --------------------------- 1 1 1 0 | 1 1 1 0 | 0 1 0 1 --------------------------- 8 4 2 1 | 8 4 2 1 | 8 4 2 1 A teď to zase posčítáme podle nových vah 8*1 + 4*1 + 2*1 + 1*0 = 14(E) | 8*1 + 4*1 + 2*1 + 1*0 = 14(E) | 8*0 + 4*1 + 2*0 + 1*1 = 5 > **EE5H** Zpáteční postup je stejný 8 4 2 1 | 8 4 2 1 | 8 4 2 1 --------------------------- 1 1 1 0 | 1 1 1 0 | 0 1 0 1 --------------------------- 4 2 1 4 | 2 1 4 2 | 1 4 2 1 Vrátíme váhy 4 2 1 | 4 2 1 | 4 2 1 --------------------- 1 0 1 | 0 1 1 | 1 0 1
Kódy
- kód je přepis pro jednoznačné přiřazení určité kombinace bitů příslušnému znaku
- kódové slovo je kombinace bitů zobrazující znak
- kódování je přiřazování kódových slov k určitým znakům používá se k tomu generátor kódů
kódy používané pro strojové operace
- přímý dvojkový kód
(+) znaménkový bit 0
(-) znaménkový bit 1
- dvojkový doplňkový kód - používá se pro záporná čísla
znaménkový bit -> 1
+45D = 0(+)|0101101 (7bitů)B
dvojkový doplňek vyjádříme tak, že vzájemně zaměníme jedničky za nuly a nuly za jedničky a k řádu čísla přičteme jedničku
0101101 1010010 + 1 ------- (-45)1010011B
kódy pro zkrácení zápisu binárních čísel osmičkový, šestnáctkový
BCD kód (váhy 8,4,2,1)
- binárně kódované desítkové číslo
- každá desítková číslice je nahrazena čtyřmi bity dvojkové soustavy, číslo v BCD kódu musí mít počet bitů dělitelný čtyřmi
Aikenův kód (váhy 2,4,2,1)
- platí, že desítkové číslice 0 až 4 mají ve čtvrtém bitu nulu a číslice 5 až 9 tam mají jedničku
Přiklad: 5 D == 0101 BCD == 1011 Aiken
Kód k z n
- k -> počet jedniček
- n -> délka slova (počet bitů)
Př.: 2z5 může například být 10100
ASCII kód
- slouží pro uložení znaků v počítači
- 1 znak zabírá jeden Bajt
- tabulka obsahuje 256znaků
0-dolní část tabulky 0-31
- Prvních 32znaků jsou znaky řídící (netisknutelné)
32-127
- jsou běžná interpunkční a matematická znaménka číslice a velká a malá anglická abeceda
1-horní část tabulky 128-255
- jsou speciální grafické symboly a znaky národních abeced
- kód kamenických (Kam)
- kód Latin2 (PCLat)
- kód stránka PC 1250 (win)
Unicode
- jeden nak ve dvou Bajtech
215 = 65 536 znaků
Aritmetické operace v dvojkovém kódu V procesoru se veškeré operace provádí nebo převádí na operaci sčítání
Sčítání ======= 0+0 = 0 0+1 = 1 1+0 = 1 1+1 = 10 Př.: 10101100 +11010111 -------- 110000011 ========= Odčítání ======== - v procesoru se operace odčítání převádí na funkce sčítání - menšitel se převede do doplňkového kódu a potom se přičte k menšenci 0-0 = 0 10-1 = 1 1-0 = 1 1-1 = 0 Př. 11001100 -10101101 => 01010010 -------- | + 1 11001100 | -------- 01010011 | 01010011 ------- | ======== (1)00100011 -> pokud přesáhnu u *odčítání* rozsah čísel (8bitů) jednička se škrtá => (X)00100011
Stručně