Osnova přednášky 2/50 Vnitřní reprezentace dat Ing Pavel Haluza ústav informatiky PEF MENDELU v Brně haluza@mendelucz Práce s počítačem ergonomie údržba počítače poziční a nepoziční soustavy převody mezi soustavami aritmetické operace v různých soustavách čísla znaky zvuky obrazy Práce s počítačem Práce s počítačem Ergonomie Údržba počítače Ergonomie 3/50 Údržba počítače 4/50 Nauka o tom, jak má člověk pracovat u počítače, aby mu to způsobilo co nejmenší zdravotní újmu Tělo lokty ohnuté do pravého úhlu, drženy u těla zápěstí narovnaná, nepokládáme před klávesnici prsty nad klávesami mírně pokrčíme myš držíme volně, nepokládáme zápěstí na podložku nohy jsou volně položeny celou plochou chodidla na podlaze Poloha monitoru při práci s počítačem velmi trpí zejména oči doporučená vzdálenost od monitoru je 40 60 cm kratší vzdálenost poškozuje oči vlivem viditelného záření delší vzdálenost poškozuje oči namáhavým zaostřováním Prach, tekutiny, drobky, mechanické vlivy počítač je plný elektroniky, proto přitahuje prach ve velké míře na základní oprášení postačí suchá nebo polosuchá prachovka, pozor na únik tekutin obvykle jednou ročně je třeba provést důkladnější údržbu vnitřku počítače vysavačem klávesnice vyžaduje speciální údržbu Teplo urychluje korozi a zkracuje životnost součástek vrstva prachu uvnitř počítače tepelně izoluje počítač neumisťujeme do blízkosti topných těles pozor na tepelný šok při přenosu z chladu do tepla
Práce s počítačem Údržba počítače Údržba počítače 5/50 6/50 Cigarety kouření v blízkosti počítače zkracuje životnost až o 40 % pevný disk je uzavřen ve vzduchotěsné schránce molekuly v cigaretovém kouři jsou ale mnohem menší než molekuly vzduchu! Magnetické a elektromagnetické pole, elektřina, záření škodí především datům uloženým na magnetických pamětech (pevný disk, disketa) motor tiskáren může produkovat elektromagnetické pole magnetické šroubováky v blízkosti počítače nepoužíváme do zásuvky, ve které je počítač, by neměly být zapojeny žádné větší motory ani topná tělesa přímé sluneční záření škodí monitorům, obraz bledne Způsob reprezentace čísel Rozdělení podle způsobu určení hodnoty čísla z dané reprezentace se skládají z uspořádané množiny symbolů číslic Poziční soustavy hodnota každé číslice je dána její pozicí v sekvenci symbolů pozicí je dána váha pro výpočet celkové hodnoty čísla nezbytným předpokladem je objevení symbolu pro nulu hodnota číslice není dána jejím umístěním v sekvenci číslic neobsahují symbol pro nulu a záporná čísla 7/50 8/50 Dnes téměř nepoužíváno, spíše historická záležitost Výhodou jednoduché sčítání a odečítání Nevýhodou dlouhý zápis čísel, která výrazně převyšují hodnotu největšího symbolu soustavy mayské číslice egyptské číslice řecké číslice Římské číslice způsob zápisu čísel pomocí písmen abecedy základem soustavy je sedm symbolů: I = 1 X = 10 C = 100 M = 1 000 V = 5 L = 50 D = 500 Ivan Vedl Xénii Lesní Cestou Do Města Ivan, Vašek, Xénie Lijí Cín Do Mumie větší číslice vždy předcházejí menším ve středověku byly pro zkrácení zápisu doplněny složené symboly, u kterých menší číslice předchází větší IV = 4 XL = 40 CD = 400 IX = 9 XC = 90 CM = 900
Poziční soustavy 9/50 Poziční soustavy 10/50 Unární číselná soustava číslo je vyjádřeno opakováním jediného (stejného) symbolu Nejrozšířenější jsou polyadické soustavy o základu z, kde z je celé číslo větší než 1 Taková soustava má z různých číslic (například desítková soustava obsahuje číslice 0 9) Způsoby vyjádření čísla poziční zápis (an a0)z polynomiální zápis + ± aiz i, kde ai {0,, z 1} i= Poziční soustavy Poziční soustavy Významné soustavy 11/50 Důvody pro zavedení dvojkové soustavy 12/50 Dvojková soustava (binární) 2 číslice (0, 1) Osmičková soustava (oktalová) 8 číslic (0, 1,, 7) Desítková soustava (dekadická) 10 číslic (0, 1,, 9) Šestnáctková soustava (hexadecimální) 16 číslic Jak vyjádřit šestnáctkovou soustavu, když máme k dispozici jen 10 číslic? použijeme písmena anglické abecedy 10 = A, 11 = B, 12 = C, 13 = D, 14 = E, 15 = F šestnáctková soustava tedy obsahuje číslice 0, 1,, F Za jakou soustavu lze považovat Morseovu abecedu? Počítač je zařízení, které zpracovává jen číselné údaje Tyto číselné údaje jsou v počítači uloženy ve dvojkové soustavě, tj v podobě 0 a 1 Technicky není problém rozlišit dva různé stavy (proud protéká neprotéká) Nejmenší jednotkou paměti je buňka, která dokáže uchovat informaci o velikosti 1 bitu Dvojkovou soustavu představil již německý filozof, vědec a matematik Gottfried Wilhelm von Leibniz (1646 1716) Jaké číselné soustavy ještě znáte a běžně používáte?
Převod z desítkové soustavy do libovolné soustavy Převod z desítkové soustavy do libovolné soustavy 13/50 14/50 Převod z desítkové soustavy do libovolné postupně dělíme základem cílové soustavy a sbíráme zbytky Hledáme hodnoty a0,, a n tak, aby platilo x = a nz n + + a1z + a0 Příklad: převádíme 123 do devítkové soustavy 123 div 9 = 13 123 mod 9 = a0 = 6 13 div 9 = 1 13 mod 9 = a1 = 4 1 div 9 = 0 1 mod 9 = a2 = 1 Kontrola: x = a2z 2 + a1z 1 + a0 = 1 9 2 + 4 9 1 + 6 = 123 12310 = 1469 Desetinná čísla při převodu rozdělíme na celou a desetinnou část Celou část převedeme standardně dělením základem cílové soustavy a sběrem zbytků Desetinnou část převedeme násobením základem cílové soustavy a sběrem celých částí výsledků Příklad: převádíme 32,75 do osmičkové soustavy 32 div 8 = 4 32 mod 8 = a0 = 0 4 div 8 = 0 4 mod 8 = a1 = 4 0,75 8 = 6,0 celá část (a 1) = 6, desetinná část = 0,0 Kontrola: x = a1z 1 + a0 + a 1z 1 = 4 8 1 + 0 + 6 8 1 = 32,75 32,7510 = 40,68 Převod z libovolné soustavy do desítkové soustavy o různých základech 15/50 16/50 Převod z libovolné soustavy do desítkové vyčíslením z-adického tvaru čísla ve tvaru řady x = a nz n + + a1z + a0 Příklady: 3145 = 3 5 2 + 1 5 1 + 4 5 0 = 84 10012 = 1 2 3 + 0 2 2 + 0 2 1 + 1 2 0 = 9 F116 = 15 16 1 + 1 16 0 = 241 178 = 1 8 1 + 7 8 0 = 15 4117 = 4 7 2 + 1 7 1 + 1 7 0 = 204 12310 = 1 10 2 + 2 10 1 + 3 10 0 = 123 3,214 = 3 4 0 + 2 4 1 + 1 4 2 = 3,5625 Převod mezi soustavami o základu 2 n pro použití v počítači mají hlavní význam 1 číslice soustavy o základu 2 n odpovídá n číslicím binární soustavy 1 číslice osmičkové soustavy odpovídá 3 číslicím dvojkové soustavy, protože 8 = 2 3 příklad: 68 = 1102 Převod mezi libovolnými soustavami nejjednodušší způsob přes desítkovou soustavu příklad: 1F16 = 3110 = 1115
Aritmetické operace Aritmetické operace Sčítání a odčítání 17/50 Násobení 18/50 Stejný princip ve všech soustavách, tedy i v desítkové Kdykoliv při sčítání v nějakém řádu součet dosáhne základu soustavy, nebo jej překročí, provedeme přenos do vyššího řádu Příklady: 4236 13416 5216 31256 427148 170438 236518 Opět stejný princip ve všech soustavách Do vyššího řádu převádíme kdykoli po překročení základu soustavy Příklad: 324 214 324 130 4 13324 Zapisujeme, o kolik jsme překročili nejbližší násobek základu soustavy Pamatujeme si, kolikrát jsme překročili základ soustavy Dělení lze provést také, ale prakticky se nepoužívá Kladná čísla v počítači 19/50 Kladná čísla 20/50 Operační paměť počítače je rozdělena do adresovatelných jednotek velikosti slabiky (bajtu) Ve slabice číslujeme bity 0 a 7, přičemž bit 0 je bitem nejnižšího řádu, bit 7 je bitem nejvyššího řádu Možnosti uložení čísel v počítači kladná čísla přímo na určitém prostoru bez nutnosti úprav záporná čísla je potřeba uložit navíc informaci o znaménku, k tomu stačí jeden bit reálná čísla oblast paměti je rozdělena na tři části (znaménko, mantisa, exponent) Uložení čísla v jedné slabice: Dekadicky Binárně ve slabice 0 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 0 0 0 0 0 0 0 0 137 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 1 0 0 0 1 0 0 1 255 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 1 1 1 1 1 1 1 1
21/50 Přímý kód 22/50 Bit nejvyššího řádu je obětován pro znaménko 0xxxxxxx kladné číslo 1xxxxxxx záporné číslo Pro vyjádření hodnoty potom zůstává v 1 bajtu pouze 7 bitů, ve 2 bajtech pouze 15 bitů apod Možnosti vyjádření záporného čísla v počítači přímý kód inverzní kód doplňkový kód kód s posunutou nulou Nejvyšší bit je obětován pro znaménko, zbývající bity beze změn Příklad: vyjádření čísel 62 a 62 001111102 (62) 101111102 ( 62) Problém: nelze sčítat kladná a záporná čísla 000000112 (3) 100001012 ( 5) 100010002 ( 8) Z výše uvedeného důvodu přímý kód nelze použít Inverzní kód 23/50 Doplňkový kód 24/50 Vyjdeme z přímého kódu, u všech významových bitů (tzn kromě znaménkového) provedeme inverzi Příklad: vyjádření čísel 62 a 62 001111102 (62) 101111102 ( 62, přímý kód) 110000012 ( 62, inverzní kód) Problém: dvě různé nuly při porovnávání 000000002 (+0) 111111112 ( 0) Z výše uvedeného důvodu inverzní kód nelze použít Vyjdeme z inverzního kódu, k číslu přičteme jedničku Příklad: vyjádření čísel 62 a 62 001111102 101111102 110000012 + 12 110000102 ( 62, doplňkový kód) Doplňkový kód řeší oba zmíněné problémy 000000112 111111012 111111102 (3) ( 5) ( 2) (62) ( 62, přímý kód) ( 62, inverzní kód) 000000002 111111112 + 12 000000002 (+0) ( 0)
Doplňkový kód 25/50 Kód s posunutou nulou (aditivní kód) 26/50 Sčítání ve dvojkovém doplňkovém kódu je stejné jako ve dvojkové soustavě Problém: je-li přenos do znaménkového bitu rozdílný od přenosu z něj, sčítání je neplatné Příklad: sčítání čísel 67 a 67 101111012 101111012 011110102 ( 67) ( 67) (122) Přičítá k číslu nějakou známou konstantu Například pro osmibitová čísla (2 8 = 256 různých čísel) 00000000 128 10000000 0 11111111 127 Příklad: vyjádření čísel 3 a 3 100000112 (3) 011110012 ( 3) Nevýhoda: zápis kladného čísla se liší od bezznaménkové reprezentace čísel Operace sčítání nepotřebuje úpravy, ale pro operaci násobení je nutné od operandů odečíst známou konstantu Použití v praxi pro reprezentaci exponentu reálných čísel v počítači 27/50 Efektivní převod do doplňkového kódu 28/50 Pokud je třeba ukládat záporná čísla, je nejvyšší bit obětován pro znaménko, jinak je součástí hodnoty čísla (hodnotový bit) Celočíselné datové typy v jazyce Pascal Název Délka Znam Rozsah Hodnoty byte 8 bitů ne 0; 2 8 1 0 až 255 shortint 8 bitů ano 2 7 ; 2 7 1 128 až 127 word 16 bitů ne 0; 2 16 1 0 až 65 535 integer 16 bitů ano 2 15 ; 2 15 1 32 768 až 32 767 longint 32 bitů ano 2 31 ; 2 31 1 cca 2 10 9 až 2 10 9 Záporné číslo sečteme s číslem 2 n, kde n je počet bitů cílového datového typu Výsledek převedeme do dvojkové soustavy stejným způsobem jako kladné číslo Příklad: zobrazení čísla 120 v proměnné typu shortint rozsah 2 8 = 256 hodnot 256 + ( 120) = 256 120 = 136 136 = 100010002 Příklad: zobrazení čísla 120 v proměnné typu integer rozsah 2 16 = 65 536 hodnot 65 536 + ( 120) = 65 536 120 = 65 416 65 416 = 11111111100010002
BCD číslice Znaménková čísla shrnutí 29/50 Uložení číslic desítkové soustavy 30/50 V jedné slabice (1 bajtu, 8 bitech) může být uloženo číslo bez znaménka z intervalu 0 až 255 číslo se znaménkem ve dvojkovém doplňkovém kódu z intervalu 128 až 127 Ve dvou slabikách (2 bajtech, 16 bitech) může být uloženo číslo bez znaménka z intervalu 0 až 65 535 číslo se znaménkem ve dvojkovém doplňkovém kódu z intervalu 32 768 až 32 767 O významu uložených bitů rozhoduje zvolený datový typ Příklad: hodnota 100010002 může reprezentovat číslo 136 v proměnné typu byte číslo 120 v proměnné typu shortint (136 2 8 ) BCD číslice (Binary Coded Decimal) Číslice mezi 0 a 9 uložená v půlslabice (4 bity) V těchto bitech se nesmí vyskytovat kombinace 10 15 Zhuštěný tvar v jedné slabice jsou uloženy dvě BCD číslice číslice vyššího řádu je ve vyšší půlslabice Nezhuštěný tvar v jedné slabice jedna číslice, horní půlslabika je prázdná Do BCD je číslo převedeno např před zobrazením ve formě desítkového čísla u 7segmentových displejů Příklad: zobrazení čísla 35 Horní půlslabika Dolní půlslabika 0011 (= 3) 0101 (= 5) 31/50 32/50 Jsou v počítači uložena podle standardu IEEE 754 1 Oblast paměti, ve které je uloženo reálné číslo, je rozdělena do tří částí znaménko nejvyšší bit (0 = kladné, 1 = záporné) exponent nese informaci o velikosti čísla mantisa uchovává číslice Matematicky lze reálné číslo vyjádřit jako Znaménko Mantisa 2 Exponent 1 IEEE (Institute of Electrical and Electronics Engineers) je organizace elektroinženýrů a informatiků, která má přes 350 000 členů v cca 150 zemích světa Definuje standardy v oblastech elektrotechniky a výpočetní techniky, spolu s ISO a ANSI patří k nejvýznamnějším standardizačním organizacím Podrobněji viz http://wwwieeeorg, příp http://wwwieeecz Single precision 32bitová čísla znaménko 1 bit, mantisa 23 bitů, exponent 8 bitů Double precision 64bitová čísla znaménko 1 bit, mantisa 52 bitů, exponent 11 bitů Extended precision 80bitová čísla znaménko 1 bit, mantisa 64 bitů, exponent 15 bitů
33/50 Posunutá forma exponentu 34/50 Mantisa kromě případu čísla 0 vždy začíná (v binární podobě) jedničkou, která se neukládá Exponent určuje počet řádů, o které musíme posunout řádovou čárku může být kladný (posun doprava) i záporný (doleva) před uložením je k němu přičteno číslo bias 2 n 1 1 (kód posunuté nuly posouvá nulu zhruba doprostřed rozsahu), kde n je počet bitů exponentu Detailnější informace http://amberfeldcvutcz/psp/ieee754htm http://wwwrootcz/clanky/norma-ieee-754-a-pribuzniformaty-plovouci-radove-tecky/ K exponentu se přičítá tzv bias single precision (8b exp) bias = 127 (2 8 1 1) double precision (11b exp) bias = 1023 (2 11 1 1) Důvod: snadnější porovnávání reálných čísel Příklad: zobrazení čísla 12,5 v single precision 12,5 = 1100,12 = 1,10012 2 3 mantisa: 1001 exponent (8b): 3 + 127 = 130 = 10000010 výsledné číslo: 1 10000010 1001000 00 záporné exponent mantisa (23b) Uložení znaků v počítači 35/50 Převodní tabulky 36/50 v počítači zobrazitelné znaky všechny znaky, které slouží pro zápis textové informace (písmena, číslice, interpunkční znaménka, matematické symboly apod) řídicí znaky slouží k ovládání přídavných zařízení (nebo programu) Počítač není schopen zpracovávat jiné než číselné informace Aby bylo možné zpracovat textovou informaci, bylo nutné přiřadit jednotlivým znakům číselné ekvivalenty a symboly se uchovávají ve formě čísel podle převodní tabulky EBCDIC Extended Binary Coded Decimal Interchange Code ASCII (ISO 646) American Standard Code for Information Interchange UCS (ISO 10646) Universal Character Set UTF UCS Transformation Format Unicode
EBCDIC ASCII EBCDIC 37/50 ASCII 38/50 Extended Binary Coded Decimal Interchange Code Prehistorický kód navržený IBM na konci 50 let 20 století Vychází z kódu používaného pro děrné štítky a BCD kódu využívaného v periferiích IBM Kódovací prostor 8 bitů 256 znaků Rozložení kódu řídicí znaky #0 63, #255 zobrazitelné znaky #64 254 Nevýhoda: znaky anglické abecedy netvoří spojitou posloupnost, nelze použít regulární výraz American Standard Code for Information Interchange Kódovací prostor 8 bitů 256 znaků Původně 7bitový kód + 1 paritní bit pro kontrolu Rozložení kódu řídicí znaky #0 31, #127 zobrazitelné znaky #32 126, #128 255 Kód má dvě části základní část #0 127 (původních 7 bitů) rozšířená část #128 255 (přidání 8 bitu) ASCII ASCII ASCII základní část 39/50 ASCII rozšířená část 40/50 Národní znaky určeny pro zobrazení textů v jiných jazycích než angličtině Žádný znakový kód nebyl původně navržen pro zobrazování národních znaků Základní kód ASCII neposkytuje dostatečný prostor pro uložení všech národních znaků Využití zbylých 128 pozic kódu ASCII (paritní bit) Způsob využití zcela nejednotný, existence různých znakových sad pro různé skupiny jazyky
ASCII ASCII Varianty kódování českých národních znaků 41/50 Varianty kódování českých národních znaků 42/50 Kód bratrů Kamenických KEYBCS2, CP895 pro osobní počítače pod MS-DOS využití sady CP437 s náhradou pozic 128 171 českými a slovenskými národními znaky PC Latin 2 IBM Latin 2, CP852 pro osobní počítače pod MS-DOS podpora středoevropských jazyků používajících latinku (čeština, slovenština, polština, rumunština, maďarština, srbochorvatština aj) KOI8čs Kod Obmena Informaciey vyvinut v SSSR v rámci RVHP ISO Latin 2 ISO 8859-2 podpora středoevropských a východoevropských jazyků psaných latinkou nebo latinskou transkripcí použitelné i pro němčinu a finštinu Windows-1250 CP1250 pro operační systém Windows podpora středoevropských jazyků a němčiny velmi podobné kódu ISO 8859-2 (v češtině pouze 6 rozdílů) Vícebajtová kódování Vícebajtová kódování Vícebajtová kódování 43/50 Unicode Little Endian a Big Endian 44/50 I 256 pozic kódu ASCII přestává stačit, hledají se nové možnosti ISO 10646 UCS = Universal Character Set univerzální prostor 4 B, tj přes 4 miliardy znaků zbytečně neúsporné řešení Unicode jeden znak ukládán vždy na 2 B snaha o vytvoření jediné globální znakové sady dolní polovina ASCII (#0 127) se ukládá pod stejnými hodnotami (00000000 xxxxxxxx) číselný kód se pro přehlednost zapisuje v hexadecimální soustavě, např A = \u0041 varianty Little Endian a Big Endian Little Endian méně významový bajt leží na nižší adrese takto kódované soubory začínají znakem FF FE typické pro Windows příklad: znak A = 41 00 Big Endian méně významový bajt leží na vyšší adrese takto kódované soubory začínají znakem FE FF typické pro programovací jazyk Java příklad: znak A = 00 41
Vícebajtová kódování Vícebajtová kódování UTF UCS Transformation Format 45/50 BOM Byte-Order Mark 46/50 Zmírňuje redundanci univerzálního kódu UCS Varianty UTF-8, UTF-16, UTF-32 UTF-8 odstraňuje nevýhody Unicode (dvojnásobná délka souborů oproti ASCII, problémy s Little/Big Endianem) znaky jsou kódovány na 1 3 B Převod mezi Unicode a UTF-8 Unicode Význam bitů max Kódování UTF-8 0000 007F 7 0xxxxxxx 0080 07FF 11 110xxxxx 10xxxxx 0800 FFFF 16 1110xxxx 10xxxxxx 10xxxxxx UTF signatura označení pořadí bajtů v souboru Kódování Obsah souboru UTF-8 EF BB BF UTF-16 Little Endian FF FE UTF-16 Big Endian FE FF UTF-32 Little Endian FF FE 00 00 UTF-32 Big Endian 00 00 FE FF Vícebajtová kódování Zvuky Kódování národních znaků shrnutí 47/50 Uložení zvukové informace 48/50 Příklad: textový soubor se slovem Béďa ASCII / ISO 8859-2 42 E9 EF 61 4 B Unicode Little Endian FF FE 42 00 E9 00 0F 01 61 00 10 B Unicode Big Endian FE FF 00 42 00 E9 01 0F 00 61 10 B UTF-8 EF BB BF 42 C3 A9 C4 8F 61 9 B Přímý záznam digitalizace frekvencí a amplitud zvukových vln výsledkem rozsáhlé soubory (např WAV), často se používá komprese (MP3, WMA, AAC, Ogg Vorbis) MIDI sekvence (Musical Instruments Digital Interface) stručný digitální popis výšky jednotlivých tónů, jejich intenzity, délky a nejrůznějších doprovodných efektů výstupní zvukové zařízení z těchto informací umí vytvářet zvuky signál neobsahuje zvuk, ale pouze pokyny pro jeho vytvoření nelze zaznamenat lidský hlas ani žádný hudební nástroj, který syntetizátor nedokáže zahrát velmi malé soubory, převod WAV do MP3 nebo MIDI je náročný
Obrazy Obrazy Uložení obrazové informace 49/50 Osnova příští přednášky 50/50 Rastrová grafika obraz tvořen maticí bodů (pixelů), jejichž barva se skládá ze tří složek červené, zelené a modré (RGB Red, Green, Blue) intenzitu barvy každé složky ukládáme v paměti zvlášť dnes nejrozšířenější model: odstín každého bodu uložen jako 8bitové číslo (2 8 = 256 možností) informace o barvě každého pixelu tedy zabere v paměti 3 B (3 složky 1 B), celkem 256 3 = 16 777 216 různých barev model RGBA používá ještě čtvrtý bajt pro uložení informace o intenzitě průhlednosti pixelu (tzv alfa kanál) Vektorová grafika obraz tvořen geometrickými objekty (body, přímky, křivky, ) využití pro tvorbu ilustrací, diagramů, schémat apod Datové formáty vyjádření hodnot datového typu formátová specifikace textový a binární formát Souborové formáty otevřený a uzavřený formát rozpoznávání formátu asociace a konverze Komprimace a archivace komprimační metody archivace a zálohování metody a postupy archivace