Otázka: Binární a doplňkový kód, převody číselných soustav
Předmět: Informatika
Přidal(a): honzahan
Binární kód
= způsob uložení informace v počítači definovaný jako konečný počet bitů, z nichž každý může nabývat právě jednu ze dvou hodnot – 0 nebo 1
– pro zápis se používá byte (bajt) s délkou slova 8 bitů
– pro výpočet hodnoty binárního zápisu – binární (=dvojková) soustava
Význam:
– používá se v případě, že člověk neví, jaká informace je v zápisu hodnot použita. Obvykle je tak označován obsah souboru, který obsahuje strojový kód procesoru nebo jiná data, která člověk nemůže přímo z čísel pochopit (např. digitální obrázek, text).
Kódování
– k uložení a pozdějšímu obnovení – určuje, jak je informace převedena do číselného zápisu (a stejně i zpět)
– např. pro text je používána dohodnutá znaková sada, kde ke každému znaku odpovídá nějaké číslo
– ASCII (= American Standard Code for Information Interchange) – používá 7bitový binární kód, který představuje text pro počítače a jiná zařízení, která používají text
(v ASCII je pro znak písmene A definován kód 65 – v desítkové soustavě, který je možné vyjídřit v šestnáctkové soustavě jako číslo 41 a binárně 1000001)
– podobně jsou ukládány i strojové instrukce procesoru, kdy každá instrukce je vyjádřena vybraným číslem a procesor musí toto číslo po načtení z paměti nejprve dekódovat (=zjistit, jaký má význam) a teprve potom ji může provést.
Doplňkový kód
– záporné číslo zaznamenáno jako binární negace (záměna všech 0 za 1) původního čísla zvětšeného o 1
– úvodní bit má význam znaménka
– při odečtení čísla 00000001 od 00000000 dojde k přetečení a výsledkem je číslo 11111111
Převody číselných soustav
- Dvojková – v digitálních elektronických obvodech
- Osmičková
- Desítková – v běžném životě
- Šestnáctková – v oblasti informatiky
Obecná definice soustavy se základem Z:
Č_10=∑_(e=n)^(-m)▒〖(n¦k) k_e∙Z^e 〗
Č – hodnota čísla v desítkové soustavě
k – koeficient, cifra
Z – základ soustavy (10, 2, 8, 16, 60)
e – exponent základu = (-m, n)
Cifry číselné soustavy se základem Z: k ϵ {0,1, …, Z-1}
Z = 2 → k ϵ {0,1}
Z = 8 → k ϵ {0,1,2,3,4,5,6,7}
Z = 16 → k ϵ {0,1,2,3,4,5,6,7,8,9,A(10),B(11),C(12),D(13),E(14),F(15)}
Převod z nedekadické do dekadické soustavy
Rozvoj čísla v číselné soustavě se základem Z slouží k převodu z nedekadické do dekadické soustavy:
– používáme mocniny základu číselné soustavy Z toho čísla, které do desítkové soustavy převádíme.
(71285,369)10 = 7∙10n + ∙∙∙ + 1∙103 + 2∙102 + 8∙101 + 5∙100 + 3∙10-1 + 1∙10-2 + 9∙10-3
(1234,56)16 = 1∙163 + 2∙162 + 3∙161 + 4∙160 + 5∙16-1 + 6∙16-2 = (4660,330)10
(1010111,0011)2 = 1∙26+0∙25+1∙24+0∙23+1∙22+1∙21+1∙20+0∙2-1+0∙2-2+1∙2-3+1∙2-4 = (87,1875)10
(5713)8 = 5∙83 + 7∙82 + 1∙81 + 3∙80 = (3019)10
Převod z dekadické do nedekadické soustavy
Postup převodu čísla z dekadické soustavy do libovolné soustavy se základem Z lze popsat následujícími kroky:
- zjistíme nejvyšší možnou mocninu základu Zi, kterou dekadické číslo obsahuje
- zapíšeme celé číslo ki (z intervalu 1 .. Z-1), které udává, kolikrát se daná mocnina v čísle vyskytuje
- odečteme od desítkového čísla hodnotu ki . Zi a zjistíme zbytek
- postup opakujeme až do doby, kdy je zbytek nulový
(250)10 → 3∙64, 7∙8, 2∙1 → (372)8 Zbytky: 58, 2
(5324)10 → 1∙4096, 2∙512, 3∙64, 1∙8, 4∙1 → (12314)8 Zbytky: 1228, 204, 12, 4
(38)10 → 1∙32, 0∙16, 0∙8, 1∙4, 1∙2, 0∙1→ (100110)2 Zbytky: 6, 2
Dvojková, osmičková, šestnáctková soustava
– pro vyjádření číselných hodnot v počítači je nejvýhodnější dvojková soustava
– nevýhoda dvojkové soustavy – čísla (posloupnosti cifer) jsou velmi dlouhá a pro člověka obtížně zapamatovatelná → zkrácení zápisu osmičková (oktalová) a šestnáctková (hexadecimální) soustava. — důvody použití osmičkové a šestnáctkové soustavy:
- Převod mezi osmičkovou, šestnáctkovou a dvojkovou soustavou je velmi snadný.
- Převod mezi uvedenými soustavami je vzájemně jednoznačný, tj. nehrozí situace, kdy číslo s konečným počtem desetinných míst v jedné soustavě by mělo nekonečný počet desetinných míst v jiné soustavě.
Převod mezi dvojkovou a šestnáctkovou soustavou
hodnota (šestnáctkově) | hodnota (binárně) | hodnota (šestnáctkově) | hodnota (binárně) |
0 | 0000 | 8 | 1000 |
1 | 0001 | 9 | 1001 |
2 | 0010 | A | 1010 |
3 | 0011 | B | 1011 |
4 | 0100 | C | 1100 |
5 | 0101 | D | 1101 |
6 | 0110 | E | 1110 |
7 | 0111 | F | 1111 |
Při převodu čísla z šestnáctkové soustavy do dvojkové se postupuje následovně:
- Každou cifru v šestnáctkové soustavě vyjádříme jako čtveřici cifer ve dvojkové soustavě
- Čtveřice cifer spojíme a získáme výslednou hodnotu čísla ve dvojkové soustavě
(1A5)16 → (0001 1010 0101)2 → (110100101)2
(3E68) → (0011 1110 0110 1000)2 → (11111001101000)2
Obdobně lze postupovat i při převodu z dvojkové soustavy do šestnáctkové:
- Číslo ve dvojkové soustavě rozdělíme na čtveřice cifer zprava (od poslední cifry vpravo). V případě, že na začátku (vlevo) čísla nevyjde čtveřice, doplníme potřebný počet nul, např. (110010101)2 → 1 1001 0101 → 0001 1001 0101
- Každou čtveřici ve dvojkové soustavě vyjádříme jako jednu cifru v šestnáctkové soustavě.
- Cifry v šestnáctkové soustavě spojíme a získáme výslednou hodnotu.
(011010000)2 → 0 1101 0000 → 0 8+4+0+1 0 → 0 13 0 → (D0)16
(100001110011)2 → 1000 0111 0011 → 8 4+2+1 2+1 → (873)16
(111110010100)2 → 1111 1001 0100 → 15 9 4 → (F94)16