Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilAgáta Křížová
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 exp1exp2 je A+B = (M1 + M2) zexp1 Pro exp1exp2 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
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.