Zpracval: hypspave@fel.cvut.cz 11. Zbrazení dat a perace. Číselné sustavy. Sčítání, dčítání, psuvy, násbení a dělení ve dvjkvé sustavě a zapjení příslušných bvdů. Zbrazení čísel se znaménkem a perace s nimi. Phyblivá řádvá čárka. Alfanumerické kódy. (A7B14SAP) I. Zbrazení dat a perace. Ulžení čísel v paměti: v pevné řádvé čárce - fixed pint, celá čísla (int, byte) v phyblivé řádvé čárce - flating pint, racinální čísla (real, flat, duble) bez znaménka (unsigned), se znaménkem (signed) různá délka neb rzsah hdnt (shrt int, int, lng int, byte) Operace: aritmetické perace - sčítání, dčítání, násbení, dělení bitvé perace - psuv (aritmetický, lgický, rtace) perace v řádvé mřížce - zakruhlení (nahru, dlů, preference sudé číslice, preference většíh čísla) Zbrazení čísel na pčítači je limitván (rzsahem registrů, paměť. Míst, apd.) Řádvá mřížka. Určuje frmát zbrazitelných čísel (tj. definuje nejvyšší řád n a nejnižší řád -m) Základní vlastnsti: Délka ř.m. pčet řádů bsažených v ř.m. l = n + 1 + m Jedntka ř.m. nejmenší čísl zbrazitelné v ř.m. ε = z -m Mdul ř.m. nejmenší celistvý násbek jedntky, který již v ř.m. zbrazitelný není Z = z n +1.O jedntku větší než nejvyšší zbrazitelné čísl Čísla zbrazitelná v řádvé mřížce:0 A < Z, A = k *ε, k celé Chyby zbrazení: ztráta přesnsti nelze zapsat číslice v nižších řádech, řeší se zakruhlením přeplnění (verflw) nelze zapsat číslice ve vyššíchřádech, představuje závažnu chybu
II. Zbrazení čísel se znaménkem a perace s nimi. Nejpužívanější číselné kódy: přímý aditivní dplňkvý Přímý kód. Angl. Sign-magnitude cde: Aditivní kód. Angl. Biased cde, Excess-K cde: Dplňkvý kód. Angl. Tw s cmplement cde (z=2), ten s cmplement cde (z=10):
III. Číselné sustavy. Číselná sustava je sustava znaků a pravidel pr zbrazení čísel. Pdle vlastnstí rzlišujeme: Plyadické (pziční) Standardní př. desítkvá sustava s arabskými číslicemi Nestandardní př. sustava pr vyjádření času Neplyadické (nepziční) př. římské číslice Zatím mají v pčítačích největší význam standardní plyadické sustavy. Standardní plyadické sustavy jsu: Určeny bází základem z, kde z N a z 2. Sustava s bází z je z-adická sustava Nejčastěji pužívané sustavy: z = 16 šestnáctkvá (hexadecimální) z = 2 dvjkvá (binární) z = 10 desítkvá (dekadická) Zápis čísla v z-adické sustavě: a i z-adická cifra (číslice) na pzici i a i hdnta číslice, 0 a i < z i řád číslice (řádvé míst, pzice) n nejvyšší řád s nenulvu číslicí m nejnižší řád s nenulvu číslicí Řád i číslice a i určuje její váhu v i = z i
Převdy sustav: (110,11) 2 = (6,75) 10 1*2-2 = 1*025 = 0.25 1*2-1 = 1*0.5 = 0.5 0*20 = 0*1 = 0.0 1*21 = 1*2 = 2.0 6.75 11,625 10 = 1011,101 2 11 md 2 = 1; 11/2 =5 0,625*2 = 1,25 -> 1 5 md 2 = 1; 5/2=2 0,25*2 = 0,5 -> 0 2 md 2 = 0; 2/2=1 0,5*2 = 1 -> 1 1 md 2 = 1; Převd mezi příbuznými sustavami:
IV. Sčítání, dčítání, psuvy, násbení a dělení ve dvjkvé sustavě a zapjení příslušných bvdů. Sčítání a dčítání v dplňkvém kódu. Plviční sčítačka (half-adder). Úplná sčítačka (full-adder) Více bitvá sčítačka pstupným šířením přensu.
Odečítání čísla v dplňkvém kódu přičítání záprnéh čísla 10-6 10 + (-6) Přens d vyšších řádů neříká nic tm jestli čísl při výpčtu přetekl. Přetečení detekujeme, pkud při sčítání dvu kladných čísel vyjde záprné, neb při sčítání dvu záprných čísel vyjde kladné. Násbení. Máme spčítat C = A*B. Mějme registry A, B, C1, C0 1. Vynuluj C1 (C1 = 0) 2. Psuň B dprava 3. Vypadla 1? ANO C1 = C1 + A NE nic 4. Psuň C1 dprava, přitm zasuň přens ze sčítání 5. Psuň C0 dprava, přitm zasuň, c vypadl z C1 6. Všechny bity B zpracvány? NE jdi na 2. ANO výsledek je C = (C1, C0). Knec.
Dělení. Máme spčítat A : B = Q, zb. R. Mějme registry A, B, Q, R 1. Vynuluj R (R = 0) 2. Psuň A dleva 3. Psuň R dleva, přitm zasuň, c vypadl z A 4. Prvnej: R >= B? ANO R = R B, bit pdílu = 1 NE bit pdílu = 0 5. Psuň Q dleva, přitm zasuň bit pdílu z 4. 6. Všechny bity A zpracvány? NE jdi na 2. ANO pdíl je Q, zbytek je R. Knec. Přesunutí bitů ve slvě. Psuv vlev dpvídá násbení dvěma, psuv vprav dělení dvěma. lgický psuv - na uvlněná místa jsu vlženy 0 (0101 1101 -> 1011 1010) aritmetický psuv - psuv nemění znaménk (1101 1001 -> 1110 1100) cyklický - na uvlněné míst jsu ulžené přeteklé bity (1101 1001 -> 1011 0011)
V. Phyblivá řádvá čárka. Mnžina reálných čísel je v pčítači reprezentvána knečnu pdmnžinu racinálních čísel sustava čísel s phyblivu řádvu čárku (flating pintnumber system) Prvky tét mnžiny lze zapsat: Řádvá mřížka má 2 části (pdmřížky): mantisa (M) - infrmace hdntě čísla, čast zlmkvý tvar expnent (e) - infrmace pzici řád. čárky, celé čísl M i e pužívají kódy pr zbrazení záp. Čísel Příklad: Aritmetické perace: sčítání/dčítání: Srvnat expnenty a sečíst/dečíst mantisy. násbení: Sečíst expnenty a vynásbit mantisy. dělení: Odečíst expnenty a vydělit mantisy. prvnání: Srvnat expnenty a prvnat mantisy. psuv: Psunem mantisy neb zvětš./zmenš. expnentu. Nrmalizace dplňkvéh kódu: Skrytá jednička předpkl. z = 2, nrmaliz. tvar, M přímý kód, M ¹ 0, A(e) ¹ 0 v nejvyšším řádu mantisy bude vždy 1 tut 1 můžeme skrýt (tj. vynechat ze zápisu čísla v ř.m.)
VI. Alfanumerické kódy. Pužívané například jak metda kódvání textu. Rzlišujeme znakvu sadu a kódvání. Znakvá sada (např. unicde) definuje seznam znaků. Kódvání určuje numerický kód pr jedntlivé znaky znakvé sady. Nemusí definvat kód pr všechny znaky. Pkud není definvaná endianita (přadí bytů ve slvě), tak se u více bajtvých kódvání pužívá BOM (byte rder mark). Je pslán jak první znak textu a nemá jiný význam než určení přadí bytů v jednm znaku. ASCII 7 bit - anglická abeceda + speciální symbly ASCII 8 bit - různá kódvání - české : windws-1250, is-8859-2, a další už histrické UTF 8 variabilní pčet bajtů na znak 1 až 4 je ASCII kmpatibilní (znaky definvané v ASCII jsu kódvané 7 bity - 0XXX určení pčtu bytů na znak - 110X XXXX(2 byty), 1110 XXXX(3 byty), 11110XXX(4 byty), 10XX XXXX (2 a další byte) pužívá se pr přens dat mezi pčítači BOM - 0xEF 0xBB 0xBF UTF 16 (UCS 2) 2 bajty na znak pužívá se pr vnitřní reprezentaci textu v prgramu není vhdné pr přens dat mezi pčítači (definuje speciální symbly, které se na jedntlivých platfrmách můžu lišit. např. knce řádků, ddělvač subrů, uknčvací 0 atd.) BOM - 0xFE 0xFF