Reprezentace dat „There are only 10 types of people in the world: - those who understand binary, - and those who don't.“

Slides:



Advertisements
Podobné prezentace
CIT Paměti Díl X.
Advertisements

Základy ukládání dat v počítači
PRIPO Principy počítačů
Číselné soustavy Pro člověka je přirozené počítat do deseti, protože má deset prstů. Matematici s oblibou říkají, že počítáme v desítkové soustavě. To.
Číselné obory -Zákony, uzavřenost a operace
Množiny Přirozená čísla Celá čísla Racionální čísla Komplexní čísla
PRIPO Principy počítačů
1 – Informatika Nauka (tj. věda) o informacích, tj. o zápisu (kódování (angl.)), přenosu (transfer (angl.)), zpracování (procesování (angl.)) informací.
Aplikační a programové vybavení
AutorMgr. Lenka Závrská Anotace Očekávaný přínos Tematická oblastOperace s reálnými čísly Téma PředmětMatematika RočníkPrvní Obor vzděláváníUčební obory.
Algebra.
9 CELÁ ČÍSLA
Otázky k absolutoriu HW 1 - 5
Algoritmy I Cvičení č. 3.
Úvod do informačních technologií autor Jana Truxová
NÁZEV ŠKOLY: Základní škola Nový Jičín, Komenského 66, p. o
VY_32_INOVACE_M-Ar 8.,9.01 Druhá mocnina
Booleova logika(algebra)
Číselné soustavy.
Téma: SČÍTÁNÍ A ODČÍTÁNÍ CELÝCH ČÍSEL 2
Druhá mocnina a odmocnina
RoBla Číselné soustavy.
TENTO PROJEKT JE SPOLUFINANCOVÁN EVROPSKÝM SOCIÁLNÍM FONDEM
Obchodní akademie, Ostrava-Poruba, příspěvková organizace
Obory čísel Přirozená čísla, nula, celá čísla, racionální čísla, iracionální čísla a reálná čísla.
Dělení se zbytkem 3 MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA
Informatika pro ekonomy II přednáška 4
MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA reg. č.: CZ.1.07/1.4.00/ Základní škola, Šlapanice, okres Brno-venkov, příspěvková organizace Masarykovo nám.
Operátory (1. část) 3 A1PRG - Programování – Seminář
Krácení a rozšiřování postupného poměru.
Střední škola Oselce Škola: SŠ Oselce, Oselce 1, Nepomuk, Projekt: Registrační číslo: CZ.1.07/1.5.00/ Název: Modernizace.
Tematická oblast: Hardware, software a informační sítě
Základní číselné množiny
Reprezentace dat v počítači
Obchodní akademie, Ostrava-Poruba, příspěvková organizace
Jazyk vývojových diagramů
Obchodní akademie, Ostrava-Poruba, příspěvková organizace
ČÍSLICOVÁ TECHNIKA Aritmetické operace
Dělení se zbytkem 8 MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA
Náhoda, generátory náhodných čísel
Násobení a dělení desetinných čísel
Střední škola Oselce Škola: SŠ Oselce, Oselce 1, Nepomuk, Projekt: Registrační číslo: CZ.1.07/1.5.00/ Název: Modernizace.
Základy číslicové techniky
Mocniny, odmocniny, úpravy algebraických výrazů
Zlomky – souhrn VY_32_INOVACE_11
TÉMA: ČÍSELNÉ SOUSTAVY 1 Jitka Mertová, 4.I/1. Zdroje: - internetové stránky soustavy.cz soustavy.cz - počítačové časopisy - encyklopedie.
Základy číslicové techniky
Střední průmyslová škola strojnická Olomouc, tř.17. listopadu 49 Výukový materiál zpracovaný v rámci projektu „Učíme moderně“ Registrační číslo projektu:
Jazyk vývojových diagramů
Číselné soustavy david rozlílek ME4B
Ukládání čísel v počítači 1
Radim Farana Podklady pro výuku
Přednost početních operací
Celá čísla Násobení.
Datové typy a struktury
Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního rozpočtu ČR. Provozováno Výzkumným ústavem pedagogickým v Praze.
Tento výukový materiál vznikl v rámci Operačního programu Vzdělávání pro konkurenceschopnost 1. KŠPA Kladno, s. r. o., Holandská 2531, Kladno,
Aplikační a programové vybavení
Výrok „Dostali na to neomezený rozpočet, a podařilo se jim ho překročit …„ (Michael Armstrong, CEO, problém Y2K, )
Uložení čísel v počítači Informatika pro ekonomy II doplněk.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Číselné soustavy dekadická binární hexadecimální
Převody mezi číselnými soustavami 1
Datové typy a operátory. Co jsou datové typy  Charakterizují proměnnou nebo konstantu – jaká data obsahuje  Data jsou v počítači ukládána jako skupiny.
Číselné soustavy.  Obecně lze libovolné celé kladné číslo zapsat polynomem a n  z n + a n-1  z n-1 + … + a 0  z 0, kde z je libovolné přirozené číslo.
ALU Aritmeticko-logická jednotka
Výukový materiál zpracován v rámci projektu
Reprezentace dat „There are only 10 types of people in the world: - those who understand binary, - and those who don't.“
Aritmetické operace s binárními čísly
Práce s desetinnými čísly
Transkript prezentace:

Reprezentace dat „There are only 10 types of people in the world: - those who understand binary, - and those who don't.“

Typy dat Literály Čísla Instrukce logické hodnoty znaky grafické symboly nečíselná data Čísla celočíselná (integer) racionální (floating point) Instrukce

Logické hodnoty možno reprezentovat jediným bitem problémy s adresováním reprezentace celou datovou jednotkou problémy s velikostí

Znaky EBCDIC ASCII UNICODE 256 závazných znaků 00 .. 3F ... speciální (řídící) znaky 40 .. FF ... tisknutelné znaky Mnoho volných pozic Abeceda není v jednom bloku ASCII UNICODE

ASCII American Standards Code for Information Interchange

ASCII – „česká“ rozšíření KOI8-čs PC standard EAST8 Latin x (Latin 2) Windows codepage (1250) ISO/IEC 8859 (8859-2)

UNICODE součást normy ISO/IEC 10646-1 (1993) znak reprezentován vícebytovou sekvencí diakritika možnost uživatelských symbolů problém se staršími programy pozor na konkrétní implementaci podpora téměř všech národních abeced

Reprezentace čísel Polyadické číselné soustavy Číslo reprezentujeme uspořádanou (m+n)-ticí koeficientů ai Soustava může mít jeden nebo více základů (radix mumber system) V soustavě s jedním základem z jsou hodnoty zi určeny jako zi=zi (s tímto vystačíme) m=0 ... celá čísla, m>0 ... zlomková část

Reprezentace čísel Nepolyadické římské číslice 1648  MDCXLVIII 2003  MMIII 9  IX, VIIII pro počítání nevhodné soustava zbytkových tříd (residue number system) definována k-tice různých základů – prvočísel číslo vyjádřeno k-ticí zbytků po dělení příslušným základem Příklad: základy 2,3,11: číslo „devět“ zapsáno jako 109 jednoznačné pouze pro čísla menší než součin základů

Přepis celého čísla do soustavy s jiným základem Zápis čísla A v soustavě o základu z: A = an-1zn-1 + an-2zn-2 + … + a1z1 + a0z0 = (an-1zn-2 + an-2zn-3 + … a1)z + a0 = a0 + z (a1 + z (a2 + …+ z(an-2 + zan-1)…)) V soustavě o základu z’ bude A zapsáno: A = b0 + z’(b1 + z’(b2 + …+ z’(bn-2 + z’bn-1)…)) A = z’  A/z’ + A mod z’  A/z’ je výsledek celočísel. dělení čísla A číslem z’ A mod z’ je zbytek při tomto dělení

Převodní algoritmus (pro celá čísla) číslo v soustavě z V soustavě o základu z dělit základem nové soustavy (z’) Výsledek dělení Výsledek je nula? NE Zbytek = bn Konec ANO

Příklady 1349 do sedmičkové soust.: 15110 do binární soustavy: 134 : 7 = 17 0 17 : 7 = 2 2 2 : 7 = 0 2 1349 = 2207 Pomocný výpočet: 134 : 7 = 17 54 15110 do binární soustavy: 151 : 2 = 75 1 75 : 2 = 37 1 37 : 2 = 18 1 18 : 2 = 9 0 9 : 2 = 4 1 4 : 2 = 2 0 2 : 2 = 1 0 1 : 2 = 0 1 15110 = 100101112

Převod do desítkové soustavy V té jsme zvyklí počítat, takže to jde takto: Koeficienty zápisu čísla o základu z vynásobíme příslušnou mocninou z a sečteme: A  an-1an-2 … a1a0 A = an-1zn-1 + an-2zn-2 + … + a1z1 + a0z0 Hornerovo schéma (úspornější výpočet): A = (…(an-1z + an-2)z + …)z + a0

Převod čísla se zlomkovou částí Hledáme koeficienty pro zi, -m  i  n-1 Celá část: popsána výše Zlomková část: podobně, ale základem nové soustavy násobíme. Celá část dává další číslici Zlomková část postupuje do další iterace

Převodní algoritmus (pro zlomkovou část) zlomková část čísla v soustavě z V soustavě o základu z násobit základem nové soustavy (z’) zlomková část výsledek je nula? NE celá část = bn ANO Konec

Příklady Postup nemusí být konečný! 0,110 a 0,62510 převést do dvojkové soustavy: 0,1 * 2 = 0,2 0 0,625 * 2 = 1,250 1 0,2 * 2 = 0,4 0 0,250 * 2 = 0,500 0 0,4 * 2 = 0,8 0 0,500 * 2 = 1,000 1 0,8 * 2 = 1,6 1 0,6 * 2 = 1,2 1 0,62510 = 0,1012 0,2 * 2 = 0,4 0 0,110 0,0001100110011…2 Postup nemusí být konečný!

Uložení čísel v paměti přirozená čísla celá čísla racionální reálná (někdy se tomu tak říká, ale stejně jde jen o racionální čísla – neboť každé číslo s konečným desetinným, binárním, … rozvojem je racionální)

Uložení přirozených čísel převodem do binární soustavy (přímé uložení) BCD – Binary Coded Decimal Každá cifra desítkového zápisu reprezentována pomocí dolních 4 bitů v bytu „horní“ 4 bity nevyužity nebo využity jinak Příklad: 193010  0001 1001 0011 0000 Výhoda: snadné zpracování vstupů/výstupů Problémy: aritmetika  speciální instrukce neúsporné  packed BCD (2 cifry do 1 bytu)

Uložení celých čísel se znaménkem s posunutím číslo převedeno do binární podoby doplněno znaménkovým bitem (bit „zcela vlevo“) dvě reprezentace nuly, složitější aritmetické operace s posunutím k číslu se přičte konstanta reprezentující nulu posunuté číslo se převede do binární podoby dvojkový doplněk (zdaleka nejpoužívanější) přirozená čísla se zobrazí přímo, záporná „trikem“ vhodné pro aritmetické operace, zejména sčítání

Dvojkový doplněk „nejlevější bit“ je opět znaménkový uložené číslo dostaneme jako součet mocniné řady (jako u přirozených čísel) s tím, že pokud je znaménkový bit roven 1, tak v řadě reprezentuje číslo -2n-1 (kde n je počet bitů v reprezentaci) negace: z čísla se vyrobí číslo stejné „velikosti“ s opačným znaménkem takto: invertuj všechny bity a přičti 1 (sčítání jako u přirozených čísel) rozsah uložitelných čísel : (-2n-1, 2n-1 -1)

Příklady uložení číslo se znaménkem s posunutím dvojkový doplněk +7 0111 1111 +6 0110 1110 +5 0101 1101 +4 0100 1100 +3 0011 1011 +2 0010 1010 +1 0001 1001 +0 0000 1000 -0 -1 -2 -3 -4 -5 -6 -7 -8 ---

Konverze délek (u dvojkového doplňku) znaménkové rozšíření +18 -18

Sčítání ve dvojkovém doplňku funguje zde normální (školní) algoritmus na sčítání přenos ze znaménkového bitu ven je ignorován přetečení (overflow) nastává právě tehdy, když znaménkový bit obou sčítanců je stejný a znaménkový bit součtu je opačný odečítání se realizuje pomocí negace a sčítání: A-B = A+(-B), tedy bitová inverze na B, přičtení jedničky a sečtení s A

Násobení mnohem složitější operace než sčítání implementace postupným sčítáním je pomalá (a*b = a + … + a) pro přirozená čísla jde přímočaře implementovat „školní“ algoritmus pro čísla ve dvojkovém doplňku je to složitější (Boothův algoritmus)

Násobení přirozených čísel terminologie: násobenec x násobitel = součin součin dostaneme jako součet částečných součinů, každý pro jednu číslici násobitele ve dvojkové soustavě: bit násobitele je 0  částečný součin = 0 bit násobitele je 1  částečný součin = násobenec při sčítání je každý částečný součet posunut o jeden bit doleva vzhledem k předchozímu součin dvou n-bitových čísel může být 2n-bitové číslo (delší ne) – např. 11 * 11 = 1001

Násobení přirozených čísel Algoritmus Registry: A,Q,M n-bitové, C 1-bitový (pro přenos) Inicializace: C,A := 0, Q := násobitel, M := násobenec Cyklus (n krát použijeme nejpravější bit v Q, bit Q0): Q0 = 0  posun sekvence C,A,Q o 1 bit vpravo Q0 = 1  přičtení M do A (případné přetečení do C) plus posun sekvence C,A,Q o 1 bit vpravo C A Q M C A Q 0 0000 1101 1011 inicializace 0 1101 1111 součet3 0 1011 1101 součet1 0 0110 1111 posun3 0 0101 1110 posun1 1 0001 1111 součet4 0 0010 1111 posun2 0 1000 1111 posun4

Násobení ve dvojkovém doplňku algoritmus pro přirozená čísla zde nefunguje triviální algoritmus: převés oba činitele na jejich absolutní hodnoty (pomocí negace), vynásobit je jako přirozená čísla a pak výsledek znegovat pokud právě jeden z činitelů byl záporný Boothův algoritmus: chytrá modifikace algoritmu pro přirozená čísla v každé iteraci aritmetický posun zachovávající znaménko (nejlevější bit v A se posune vpravo a zreplikuje, C není použito) součet jen na začátku a konci bloku jedniček (odečtení na začátku bloku a přičtení na konci) rychlejší než triviální algoritmus (téměř na všech HW používán) důkaz, že funguje korektně, je složitý (nebudeme provádět)

Uložení racionálních čísel Z různých možných reprezentací se nejvíce ujala reprezentace s plovoucí řádovou čárkou („floating point“): Je dán základ β a přesnost p (počet číslic) Příklad: 0,9 pro β=10, p=3 ... 9.00  10-1 0,1 pro β=2, p=24 ... (nelze přesně) 1.10011001100110011001100  2-4

Floating – point reprezentace Zápis ve tvaru (jedna cifra před desetinnou tečkou, zbytek za desetinnou tečkou) d0.d1d2 ... dp-1  β e ( 0  di  β ) reprezentuje číslo (d0  d1 β -1  ...  dp-1 β 1-p) β e Zápis nemusí být jednoznačný: 1.00  10-1 0.01  101 Je-li d0 0, reprezentace je nazývána normalizovanou Pro d0 0 je reprezentace nazývána denormalizovanou

IEEE Standard 754 dnes univerzálně rozšířený normalizovaná mantisa a exponent s posunem single precision: β=2, p=24, e  = 8 bitů double precision: β=2, p=53, e  = 11 bitů quadruple precision: β=2, p=113, e  = 15 bitů Extended formats: single extended: β=2, p≥32, e ≥ 11 bitů double extended: β=2, p≥64, e ≥ 15 bitů

IEEE Standard 754 zápis v bitovém formátu (single a double)

Možnosti zápisu dle IEEE 754 exponent mantisa význam emin-1 000…000 m  0  0 emin-1 m  0  0.m  2emin < emin, emax> m  1.m  2e emax+1 111…111   emax+1 m  0 1xxx…xxx QNaN m  0 0xxx…xxx SNaN

NaN operace vznik NaN +  + (-)  0   / 0/0, /  x pro x<0 Pozor na chování konkrétního procesoru a kompilátoru!!!! operace vznik NaN +  + (-)  0   / 0/0, /  x pro x<0

Operace s floating-point čísly A=M1 zexp1 B=M2 zexp2 Sčítání o odečítání Pro exp1exp2 je A+B = (M1 + M2)  zexp1 Pro exp1exp2 je nutno: A nebo B denormalizovat provést výpočet normalizovat výsledek Pozor: sčítání a odečítání nejsou asociativní přetečení či podtečení (při denormalizaci i při výpočtu) Násobení a dělení A.B = (M1 . M2)  zexp1+exp2 A/B = (M1 / M2)  zexp1-exp2

Vznik chyb Při výpočtu Při konverzi overflow – přetečení underflow – podtečení divide by zero – dělení nulou invalid – neplatná operace inexact – nepřesný výsledek Při konverzi scaling error – zavedením stupnice (škálování) truncation error – zanedbáním části čísla rounding error – zaokrouhlením (při pořizování)

Vícebytové sekvence jedno číslo je typicky uloženo ve více bytech problém – jak ukládat? jak přenášet? od nižších „řádů“ od vyšších „řádů“ jinak...? po jakých částech? hlavní problém: potrabilita SW a portabilita dat mezi zařízeními s různými způsoby ukládání

Ukládání vícebytových sekvencí Big-endian IBM 360/370, PDP-10, Motorola 6800, různé RISC Little-endian VAX, MOS 6502, Intel x86 Midle-endian – ani little, ani big. „Use of perverse byte orders such as 3-4-1-2 or 2-1-4-3, ocassionally found in the packed-decimal formats of minicomputer manufacturers who shall remain nameless.“ NUXI problem

Byte-sexual / bi-endian PowerPC, DEC Alpha, MIPS, PA-RISC, ARM, IA64 někdy lze změnit programově (bit v konfiguraci) někdy jen HW (DEC Alpha) default big: MIPS + IRIX, PA-RISC, většina PPC default little: MIPS + Ultrix, Alpha, IA-64 + Linux