Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

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

Podobné prezentace


Prezentace na téma: "Reprezentace dat „There are only 10 types of people in the world: - those who understand binary, - and those who don't.“"— Transkript prezentace:

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 Čísla Instrukce 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 ASCII UNICODE 256 závazných znaků
F ... speciální (řídící) znaky 40 .. FF ... tisknutelné znaky Mnoho volných pozic Abeceda není v jednom bloku ASCII UNICODE

5 ASCII American 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  MMIII  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ů

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 + a = 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 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

12 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 =

13 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

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

16 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, …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 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:  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 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í

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í čí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 ---

22 Konverze délek (u dvojkového doplňku)
znaménkové rozšíření +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 čí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 inicializace součet3 součet posun3 posun součet4 posun 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=  ,1 pro β=2, p= (nelze přesně)  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ý:   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  = 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ů

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

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

33 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

34 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

35 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í)

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 or , 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


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

Podobné prezentace


Reklamy Google