1 / 38

Reprezentace dat

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 logické hodnoty znaky grafické symboly nečíselná data Čísla celočíselná (integer) racionální (floating point) Instrukce. Logické hodnoty.

kevina
Download Presentation

Reprezentace dat

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

  4. Znaky • EBCDIC • 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

  5. ASCIIAmerican Standards Code for Information Interchange

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

  7. 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

  8. 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

  9. 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ýchzá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ů

  10. 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í

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

  12. Příklady 1349 do sedmičkové soust.: 134 : 7 = 17 0 17 : 7 = 2 2 2 : 7 = 0 2 1349 = 2207 Pomocný výpočet: 134 : 7 = 17 54 0 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

  13. Převoddo 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 … a1a0A = an-1zn-1 + an-2zn-2 + … + a1z1 + a0z0 • Hornerovo schéma (úspornější výpočet):A = (…(an-1z+ an-2)z + …)z + a0

  14. 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

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

  16. Příklady 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ý!

  17. 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í)

  18. Uložení přirozených čísel • převodem dobiná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)

  19. Uložení celých čísel • se znaménkem • čí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í

  20. 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)

  21. Příklady uložení

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

  23. 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

  24. 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)

  25. 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

  26. Násobení přirozených číselAlgoritmus • 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 100011111 součet4 0 0010 1111 posun2 0 1000 1111 posun4

  27. 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)

  28. 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-10,1 pro β=2, p=24 ... (nelze přesně)1.10011001100110011001100  2-4

  29. 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-10.01  101 • Je-li d0 0, reprezentace je nazývána normalizovanou • Pro d0 0 je reprezentace nazývána denormalizovanou

  30. 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  = 11bitů • quadruple precision: β=2, p=113, e  = 15bitů Extended formats: • single extended:β=2, p≥32, e ≥11bitů • double extended:β=2, p≥64, e ≥15bitů

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

  32. Možnosti zápisu dle IEEE 754

  33. NaN Pozor na chování konkrétního procesoru a kompilátoru!!!!

  34. Operace s floating-point číslyA=M1 zexp1 B=M2 zexp2 Sčítání o odečítání • Pro exp1exp2je 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

  35. Vznik chyb • Při výpočtu • 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í)

  36. 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í

  37. 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

  38. 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

More Related