Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
B. znaki alfabetu D. obrazy
REPREZENTACJA DANYCH A. liczby C. dźwięki B. znaki alfabetu D. obrazy · pozycyjny zapis liczb Lp = a0p0 + a1p1 + a2p // Lp >= 0 p : podstawa systemu liczenia a0 , a1 , a2 , ... cyfry // p cyfr kolejność zapisu : ...a2a1a0
2
· liczby binarne p = 2 L2 = 1a0 + 2a1 + 4a2 + 8a3 + 16a4 + 32a5 + 64a6 + 128a a a a np. = 1 * 0 + 2 * 0 + 4 * 1 + 8 * 1 + 16 * 0 + 32 * 1 = 4410 bit : ilość informacji, cyfra binarna bajt = 8 bitów (cyfr binarnych)
3
A. Znaki alfabetu · za pomocą liczb binarnych · kod ASCII – 8-bitowy (0 255) · 000 standard · 128 znaki narodowe, specjalne · przestarzały, brak NL, strzałek itp. · UNICODE : UTF-8, UTF-16, UTF-32 ( 0kkkkkkk kkkkk 10kkkkkk kkkk 10kkkkkk 10kkkkkk kkk 10kkkkkk 10kkkkkk 10kkkkkk
4
B. Liczby Liczby całkowite bez znaku · ciągi binarne n-elementowe 0 (2n – 1) 8 b – B – 255 16 b – B – 32 b – B – 64 b – 8 B –
5
· przeliczanie BIN DEC : ze wzoru na wartość liczby Lp = a0p0 + a1p1 + a2p p = 2 L2 = 1a0 + 2a1 + 4a2 + 8a3 + 16a4 + 32a5 + 64a6 + 128a a a a np. = 1*0 + 2*0 + 4*1 + 8*1 + 16*0 + 32*1 = 4410 · im mniejsza podstawa tym mniej różnych cyfr ale więcej pozycji w liczbie o takiej samej wartości
6
DEC BIN : dzielenie przez 2
44 0 22 = 11 1 5 1 2 0 1 1
7
· łatwiej przeliczać gdy p = 2m m = 3 system ósemkowy, cyfry 0 7
OCT BIN 000 1 001 2 010 3 011 4 100 5 101 6 110 7 111 = 54038 =
8
m = 4 system, heksadecymalny (hex), szesnastkowy
cyfry 0 9, A, B, C, D, E, F HEX BIN DEC 8 1000 9 1001 A 1010 10 B 1011 11 C 1100 12 D 1101 13 E 1110 14 F 1111 15 = 9E0F16 AB7DE16 =
9
Liczba całkowita bez znaku w rejestrze
1 bajt
10
Arytmetyka liczb binarnych całkowitych bez znaku
· dodawanie i odejmowanie jak dla dziesiętnych – – 26 przeniesienie pożyczka ( nadmiar lub bit ( niedomiar lub bit dodawany do odejmowany od starszej części starszej części liczby ) liczby )
11
· mnożenie : dodawanie z przesunięciem A = 1001; // 9
B = 1011; // 11 Iloczyn = 0; Ile = Length(B); for( int i = 0 ; i < Ile; ++i) { if (B[i]) == 0 C = 0; else C = A; Iloczyn = Iloczyn + C; A = A << 1; } // wynik podwójnej długości
12
dzielenie : wielokrotne odejmowanie A = 1010; // 10
B = 0011; // 3 Iloraz = 0; while ( ! Koniec) { C = A - B; if ( C > 0 ) Iloraz ++ ; A = A – B; } else Koniec = true; Reszta = C + B;
13
Liczby całkowite ze znakiem · znak – moduł
– 127 – 0 znak moduł 0 1 –
14
· znak – moduł rzadko stosowany bo trudne + –
a + b a.Z | a.M + b.Z | b.M 1. a.Z = b.Z a.Z | ( a.M + b.M ) 2. a.Z b.Z a.M > b.M a.M b.M a.Z | ( a.M – b.M ) b.Z | ( b.M – a.M )
15
· uzupełnienie do 2 (Uzp2)
liczby liczby –
16
+ 1 – 7 + 2 – 6 + 3 – 5 + 4 – 4 + 5 – 3 + 6 – 2 + 7 – 1 – 8
17
· liczba 4–bitowa Uzp2 – 8 + 7
· obliczanie liczby przeciwnej dla Uzp2 ~ – 5 – 5 ~
18
· dodawanie i odejmowanie niezależne od znaków wynik poprawny, gdy nie ma nadmiaru
(– 5 ) przeniesienie (pomijamy) · zamiast odejmowania, dodawanie liczby przeciwnej 4 – 6 = (– 6 ) (– 6 ) – 2
19
· wykrywanie nadmiaru dla znak – moduł nadmiar, gdy przeniesienie na bit znaku = 1 // -1
20
dla Uzp2 – – – – OV OV OK OK Cz = Cz = Cz = Cz = 0 Cs = Cs = Cs = Cs = 0 Cz + Cs = 1 nadmiar (Cz różne od Cs)
21
Liczby niecałkowite · zapis stałopozycyjny . . . . . . liczba całkowita ułamek . . . a2p2 + a1p1 + a0p0 + a-1p-1 + a-2p konwersja binarno – dziesiętna = 1*22 + 0*21 + 1*20 + 0*2-1 * 1*2-2 = ¼ = 5¼ = 5.25
22
konwersja dziesiętno – binarna
* 2 0 86 1 72 1 44 = 1 76 1 52 1 04 0 08 .
23
16b b liczba całkowita ułamek 4 cyfry cyfry dziesiętne dziesiętne · dodawanie i odejmowanie jak dla liczb całkowitych bez znaku (znaki ew. jako odrębne bity) · mnożenie i dzielenie algorytmy iteracyjne prostsze niż dla liczb zmiennopozycyjnych
24
· zapis zmiennopozycyjny
m * pc p = 10 1.57* E12 normalizacja 125.78E5 12.578E E8 12578E3
25
p = 2 , standard IEEE 754 01...00 – 3 cecha 01...01 – 2
s c m – 3 cecha – 2 przesunięta – 1 0 1 znak liczby 2 0 3 1 – 4
26
· mantysa znormalizowana (m) ma zawsze postać
1.xxxxxxxx....xxxxx ( ) początkowa jedynka nie jest pamiętana ≤ m < · przykłady – NaN s a x ... x // x ... x != 0 Inf s a x ... x // x ... x == 0
27
· reprezentowane wartości
1|1..1| |0..01| |0..0| |0..01| |1..1|1..1 ujemne zero dodatnie 2n n n n liczba cyfr mantysy
28
· dla n = 52 odległość pomiędzy reprezentowanymi liczbami wynosi:
c = 0 e-16 c = 1 e-16 c = 52 1 c = 150 e+29 · typy liczb zmiennopozycyjnych half : b 1 / 5 / 2.3 E cyfry single : b 1 / 8 / 3.4 E cyfr double : b 1 / 11 / 1.7 E cyfr quadruple : b 1/ 112 / 15 5.3 E cyfry
29
Arytmetyka zmiennopozycyjna
mnożenie mnożenie mantys, sumowanie cech, normalizacja dzielenie dzielenie mantys, odejmowanie cech, normalizacja dodawanie wyrównanie cech, dodawanie, normalizacja odejmowanie wyrównanie cech, odejmowanie, normalizacja
30
· dla 3 cyfr dokładnych 0.375 * * = 0.375 * * 105 = * 105 * 105 · sposób sumowania trzech liczb zmiennopozycyjnych aby błąd był najmniejszy · obliczenia zmiennopozycyjne na odpowiedzialność programisty
31
EAX|ECX + EBX|EDX : ADD ECX, EDX // Carry ADC EAX, EBX // + Carry
· Super Integer Asembler EAX|ECX + EBX|EDX : ADD ECX, EDX // Carry ADC EAX, EBX // + Carry __asm { __asm add ecx, edx __asm adc eax, ebx }; EAX EBX ECX EDX
32
Język C long long X[2], Y[2], Z[2] ; Z[1] = X[1] + Y[1] ; // Carry ? Super Integer : p = 10000 CSI CSI CSI CSI znak 2B 2B 2B B 2B LSD MSD SIGN SupInt
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.