wstep do informatyki - wozna. · pdf filewstep˛ do informatyki bozena wozna-szcz´ e˙...
TRANSCRIPT
Wstep do Informatyki
Bozena [email protected]
Jan Długosz University, Poland
Wykład 4
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 1 / 1
DZIELENIE LICZB BINARNYCH
Dzielenie mozna przeprowadzic wykorzystujac nastepujace metody:
metoda porównawcza,
metoda nierestytucyjna,
metoda restytucyjna.
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 2 / 1
DZIELENIE LICZB BINARNYCH - metodaporównawcza
Metoda porównawcza jest stosowana w zapisie znak moduł (ZM) i gdyjest spełniony warunek A < B, gdzie:
A - dzielna,
B - dzielnik.
Niech:
r0 - reszta poczatkowa
Rn = rn · 2−n - reszta z dzielenia
rn - n-ta reszta czesciowa
Q - iloraz uzyskany w algorytmie o bitach qi .
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 3 / 1
DZIELENIE LICZB BINARNYCH - metodaporównawcza
Polega na porównywaniu dzielnika z n–ta reszta.
1.Jezeli przesunieta reszta czesciowa jest wieksza lub równa oddzielnika (r >= B), to:
– kolejny bit ilorazu qi ustawiamy na 1 (tj. qi = 1),
– odejmujemy dzielnik od tej reszty.
2.Jezeli przesunieta reszta czesciowa jest mniejsza od dzielnika(r < B), to kolejny bit ilorazu qi = 0.
3.Dokonujemy przesuniecia otrzymanego wyniku o jedno miejsce wlewo i przechodzimy do punktu pierwszego.
Wynikiem dzielenia jest iloraz Q o bitach q0q1...qi .
W pierwszym kroku porównujemy reszte poczatkowa r0 (tzn. Azapisana na tylu pozycjach co B) z dzielnikiem.
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 4 / 1
METODA PORÓWNAWCZA – przykład 1
PodzielicA = − 25
128= 1.0011001(ZM)
przez
B =516
= 0.0101(ZM).
Warunek A < B jest spełniony.
Porównujemy kolejne reszty czesciowe z modułem dzielnika.
Oczekiwany wynik:
− 25128
:5
16= − 25
128· 16
5= −5
8= 1.101(ZM)
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 5 / 1
METODA PORÓWNAWCZA – przykład 1
⇐ r0 .0011001
r1 .011001
r1 > B r1 − B q1 = 1
.011001
− .010100
⇐ .000101
r2 .00101
⇐ r2 < B .00101 q2 = 0
r3 .0101
r3 = B r3 − B q3 = 1
.0101
− .0101
.0000
r4 .0000
A = 1.0011001(ZM)
B = 0.0101(ZM)
Bit znaku:
q0 = a0 ⊕ b0
q0 = 1
Q = q0.q1q2q3
AB
= 1.101
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 6 / 1
METODA PORÓWNAWCZA – przykład 2
PodzielicA = − 3
128= 1.0000011(ZM)
przez
B =916
= 0.1001(ZM).
Warunek A < B jest spełniony.
Porównujemy kolejne reszty czesciowe z modułem dzielnika.
Oczekiwany wynik:
− 3128
:9
16= − 3
128· 16
9= − 1
24≈ 1.00001(ZM)
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 7 / 1
METODA PORÓWNAWCZA – przykład 2⇐ r0 .0000011
r1 .0000110
r1 < B q1 = 0
⇐ r2 .0001100
r2 < B q2 = 0
⇐ r3 .0011000
r3 < B q3 = 0
⇐ r4 .0110000
r4 < B q4 = 0
⇐ r5 .1100000
r5 ≥ B r5 − B q5 = 1
.11000− .10010= .00110
⇐ r6 .0110
A = 1.0000011(ZM)
B = 0.1001(ZM)
Bit znaku:
q0 = a0 ⊕ b0
q0 = 1
Q = q0.q1q2q3q4q5
AB
= 1.00001
Reszta : 0.011 · 2−6
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 8 / 1
METODA NIERESTYTUCYJNA
Jest to metoda dzielenia dwóch liczb zapisanych w kodzie U2.
Aby mozna było ja zastosowac, moduł dzielnej musi byc mniejszy odmodułu dzielnika (|A| < |B|)
1. Metoda ta polega na badaniu znaku dzielnika i kolejnej resztyczesciowej. Pierwsza reszta czesciowa jest równa dzielnej.
Jezeli znaki sa zgodne to odejmujemy dzielnik od przesunietej wlewo kolejnej reszty czesciowej; kolejny bit ilorazu qi = 1.
Jezeli znaki sa rózne to dodajemy dzielnik do przesunietej w lewokolejnej reszty czesciowej; kolejny bit ilorazu qi = 0.
2. Powtarzamy punkt 1, az do momentu, gdy kolejna reszta czesciowabedzie równa 0.
3. Do otrzymanego wyniku dodajemy poprawke równa: −1 + 2−n,gdzie n oznacza n–ta reszte z dzielenia.
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 9 / 1
METODA NIERESTYTUCYJNA - przykład 1
Podziel A przez B, gdzie
A = − 15128
= 1.1110001(U2)
B =38= 0.011(U2)
Warunek |A| < |B| jest spełniony.
Oczekiwany wynik:
− 15128
:38= − 15
128· 8
3= − 5
16
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 10 / 1
METODA NIERESTYTUCYJNA – przykład 1
r0 1.1110001⇐ r0 r1 1.110001
B(+); r1(−) r1 + B q1 = 01.110001 + 0.011000
r2 0.001001⇐ r2 r3 0.01001
B(+); r3(+) r3 − B q2 = 10.01001 + 1.10100
r4 1.11101⇐ r4 r5 1.1101
B(+); r5(−) r5 + B q3 = 01.1101 + 0.0110
r6 0.0011⇐ r6 r7 0.011
B(+); r7(+) r7 − B q4 = 10.011− 0.011
r8 0.000
A = 1.1110001(U2)B = 0.0011(U2)
Bit znaku: q1 = 0
Pseudo iloraz:Q = q1.q2q3q4 == 0.101(U2)
Poprawka:−1 + 2−4 = −15
16 == 1.0001(U2)
Ostatecznie:0.101 + 1.0001 == 1.1011
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 11 / 1
METODA NIERESTYTUCYJNA - przykład 2
Podziel A przez B, gdzie
A = − 15128
= 1.1100111(U2)
B = −58= 1.0110000(U2)
Warunek |A| < |B| jest spełniony.
Oczekiwany wynik:
− 25128
: (−58) =
25128· 8
5=
516
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 12 / 1
METODA NIERESTYTUCYJNA – przykład 2
r0 1.1100111⇐ r0 r1 1.1001110
B(−); r1(−) r1 + (−B) q1 = 11.100111 + 0.1010
r2 0.001111⇐ r2 r3 0.011110
B(−); r3(+) r3 + B q2 = 00.011110 + 1.0110
r4 1.110110⇐ r4 r5 1.10110
B(−); r5(−) r3 + (−B) q3 = 11.10110 + 0.1010
r6 0.01010
⇐ r6 r7 0.1010
B(−); r7(+) r7 + B q4 = 00.1010 + 1.01100.0000
A = 1.1100111(U2)B = 1.0110000(U2)
Bit znaku: q1 = 1
Pseudo iloraz:Q = q1.q2q3 == 1.010(U2)
Poprawka:−1 + 2−4 = −15
16 == 1.0001(U2)
Ostatecznie:1.010 + 1.0001 == 0.0101(U2) =
516
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 13 / 1
WARTOSC LICZBY Z NADMIAREM
Dotychczas poznane kody liczb binarnych nie pozwalaja nauszeregowanie w porzadku rosnacym słów kodowych. Dlaczego?
Rozwazmy nastepujacy przykład słów kodowych 3 bitowych. Wówczassłowa kodowe kolejnych liczb musiałyby sie układac nastepujaco: 000,001, 010, 011, 100, 101, 110, 111, gdze słowo kodowe 000 powinnookreslac liczbe najmniejsza, a słowo kodowe 111 liczbe najwieksza.Ale zarówno poznany juz kod znak-moduł, jak i kod U2 na to niepozwalaja:
kod 000 001 010 011 100 101 110 111
ZM 0 1 2 3 0 −1 −2 −3
U2 0 1 2 3 −4 −3 −2 −1
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 14 / 1
WARTOSC LICZBY Z NADMIAREM
Niech wartosc binarna słowa kodowego bedzie równa kodowanejliczbie pomniejszonej o pewna stała zwana nadmiarem (ang. excesslub bias). W zaleznosci od tej stałej słowa kodowe beda oznaczałyrózne liczby, np.:
Wartosc nadmiaru – BIASkod 4 3 2 1 0 -1 -2 -3000 -4 -3 -2 -1 0 1 2 3001 -3 -2 -1 0 1 2 3 4010 -2 -1 0 1 2 3 4 5011 -1 0 1 2 3 4 5 6100 0 1 2 3 4 5 6 7101 1 2 3 4 5 6 7 8110 2 3 4 5 6 7 8 9111 3 4 5 6 7 8 9 10
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 15 / 1
WARTOSC LICZBY Z NADMIAREM
UWAGA:W zaleznosci od nadmiaru mozemy otrzymywac rózne zakresykodowanych liczb.
Przykładowo dla przedstawionego w tabeli 3 bitowego kodu inadmiaru 4 otrzymujemy zakres od -4 do 3.
Nadmiar mozna tak dobrac, aby zakres w całosci zawierał sie postronie liczb ujemnych lub dodatnich.
Przykładowo dla przedstawionego w tabeli 3 bitowego kodu inadmiaru -3 otrzymujemy zakres od 3 do 10.
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 16 / 1
WARTOSC LICZBY Z NADMIAREM - definicja
Wartosc dziesietna liczby zapisanej w dwójkowym kodzie z nadmiarem
bn−1bn−2 . . . b2b1b0 (BIAS) =
= bn−1 · 2n−1 + bn−2 · 2n−2 + . . .+ b2 · 22 + b1 · 21 + b0 · 20 − BIAS,
gdzie
bi - i-ty bit, cyfra dwójkowa 0 lub 1
n - liczba bitów w zapisie liczby
bias - nadmiar, odchyłka w stosunku do naturalnych wartoscisłów
kodowych.
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 17 / 1
KODOWANIE Z NADMIAREM - PRZYKŁAD 1
Dla kodu z nadmiarem BIAS = 129(10) oblicz wartosc słowa kodowego11111111(BIAS=129).
11111111(BIAS=129) = 27 + 26 + 25 + 24 + 23 + 22 + 21 + 20 − 129 =
= 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1− 129 =
= 255− 129 =
= 126(10).
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 18 / 1
KODOWANIE Z NADMIAREM - PRZYKŁAD 2
Dla kodu z nadmiarem BIAS = 63(10) oblicz wartosc słowa kodowego00011111(BIAS=63).
00011111(BIAS=63) = 24 + 23 + 22 + 21 + 20 − 63 =
= 16 + 8 + 4 + 2 + 1− 63 =
= 31− 63 =
= (−32)(10).
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 19 / 1
Przeliczanie liczb dziesietnych na liczby z nadmiarem
Procedura przeliczania liczby dziesietnej na dwójkowy zapis znadmiarem
1. Do wartosci liczby dziesietnej dodaj nadmiar bias. Otrzymasz wten sposób wartosc dziesietna binarnego zapisu liczby w systemiedwójkowym z nadmiarem.
2. Obliczona wartosc słowa kodowego przelicz na system dwójkowy.
3. Wynikowe słowo binarne uzupełnij bitami o wartosci 0 do długosciformatu.
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 20 / 1
Przeliczyc liczbe dziesietna 95(10) na zapis w8-bitowym kodzie z nadmiarem 129(10)
Obliczamy wartosc dziesietna słowa kodowego:
95 + 129 = 224
Otrzymana wartosc słowa kodowego przeliczamy na systemdwójkowy:
224(10) = 11100000(2)
95(10) = 11100000(BIAS=129)
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 21 / 1
Przeliczyc liczbe dziesietna (−24)(10) na zapis w8-bitowym kodzie z nadmiarem 129(10)
Obliczamy wartosc dziesietna słowa kodowego:
(−24) + 129 = 105
Otrzymana wartosc słowa kodowego przeliczamy na systemdwójkowy:
105(10) = 1101001(2)
(−24)(10) = 01101001(BIAS=129)
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 22 / 1
Zakres liczb z nadmiarem
Słowa kodowe tworza ciag rosnacy w naturalnym systemie binarnym.Najmniejszym co do wartosci słowem kodowym jest 0 . . . 0:
min(BIAS) = 0...0(BIAS) = 0− BIAS,
a najwiekszym 1 . . . 1:
max(BIAS) = 1...1(BIAS) = 2n − 1− BIAS.
Zatem zakres n bitowej liczby dwójkowej w kodzie z nadmiarem bias
Z(BIAS) = 〈−BIAS;2n − 1− BIAS〉
Zakres ten moze byc dowolnie przesuwany na osi liczbowej poprzezzmiane odchylenia. Dzieki temu zawsze mozna go dopasowac dobiezacych potrzeb obliczeniowych
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 23 / 1
ZADANIE 1 - Jakie zakresy posiadaja:
4 bitowe liczby w kodzie z nadmiarem BIAS = 8 = 23
< 0000(BIAS=8),1111(BIAS=8) >=< −8,7 >
8 bitowe liczby w kodzie z nadmiarem BIAS = 128 = 27
< 00000000(BIAS=128),11111111(BIAS=128) >=< −128,127 >
16 bitowe liczby w kodzie z nadmiarem BIAS = 32768 = 215
< 0000000000000000(BIAS=215),1111111111111111(BIAS=215) >=< −32768,32767 >
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 24 / 1
ZADANIE 1 - Jakie zakresy posiadaja:
4 bitowe liczby w kodzie z nadmiarem BIAS = 8 = 23
< 0000(BIAS=8),1111(BIAS=8) >=< −8,7 >
8 bitowe liczby w kodzie z nadmiarem BIAS = 128 = 27
< 00000000(BIAS=128),11111111(BIAS=128) >=< −128,127 >
16 bitowe liczby w kodzie z nadmiarem BIAS = 32768 = 215
< 0000000000000000(BIAS=215),1111111111111111(BIAS=215) >=< −32768,32767 >
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 24 / 1
ZADANIE 1 - Jakie zakresy posiadaja:
4 bitowe liczby w kodzie z nadmiarem BIAS = 8 = 23
< 0000(BIAS=8),1111(BIAS=8) >=< −8,7 >
8 bitowe liczby w kodzie z nadmiarem BIAS = 128 = 27
< 00000000(BIAS=128),11111111(BIAS=128) >=< −128,127 >
16 bitowe liczby w kodzie z nadmiarem BIAS = 32768 = 215
< 0000000000000000(BIAS=215),1111111111111111(BIAS=215) >=< −32768,32767 >
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 24 / 1
Arytmetyka liczb z nadmiarem - Dodawanie
Kod binarny liczby w zapisie z nadmiarem ma wartosc:
c(BIAS) = liczba + BIAS
Suma dwóch kodów da nam:
c1(BIAS) = liczba1 + BIAS
c2(BIAS) = liczba2 + BIAS
c1(BIAS) + c1(BIAS) = (liczba1 + liczba2) + 2 · BIAS
Prosta suma dwóch słów kodowych prowadzi do wyniku, który jest zaduzy o wartosc nadmiaru. Aby zatem otrzymac słowo kodoweodpowiadajace sumie liczb, nalezy od wyniku dodawania odjacnadmiar:
c1+2(BIAS) = c1(BIAS) + c2(BIAS) − BIAS
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 25 / 1
Obliczyc 0011(BIAS=7) + 1010(BIAS=7)
0 0 1 1
+ 1 0 1 0
1 1 0 1
− 0 1 1 1
0 1 1 0
0011(BIAS=7) + 1010(BIAS=7) = 0110(BIAS=7)
Sprawdzenie:
0011(BIAS=7) = 3− 7 = −4
1010(BIAS=7) = 10− 7 = 3
0110(BIAS=7) = 6− 7 = −1
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 26 / 1
Arytmetyka liczb z nadmiarem - Odejmowanie
Kod binarny liczby w zapisie z nadmiarem ma wartosc:
c(BIAS) = liczba + BIAS
Róznica dwóch kodów da nam:
c1(BIAS) = liczba1 + BIAS
c2(BIAS) = liczba2 + BIAS
c1(BIAS) − c1(BIAS) = liczba1 − liczba2
Prosta róznica dwóch słów kodowych prowadzi do wyniku, który jestza mały o wartosc nadmiaru. Aby zatem otrzymac słowo kodoweodpowiadajace róznicy liczb, nalezy do wyniku odejmowania dodacnadmiar:
c1−2(BIAS) = c1(BIAS) − c2(BIAS) + BIAS
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 27 / 1
Obliczyc 1011(BIAS=7) − 1110(BIAS=7)
1 0 1 1
− 1 1 1 0
1 1 1 0 1
+ 0 1 1 1
1 0 1 0 0
1011(BIAS=7) − 1110(BIAS=7) = 0100(BIAS=7)
Sprawdzenie:
1011(BIAS=7) = 11− 7 = 4
1110(BIAS=7) = 14− 7 = 7
0100(BIAS=7) = 4− 7 = −3
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 28 / 1
ZADANIA
Zad.1 Obliczyc wartosc dzisietna liczb dwójkowych z nadmiarem:
a) 1101(BIAS=9) b) 1110(BIAS=8)
c) 0011(BIAS=7) d) 1001(BIAS=6)
e) 0110(BIAS=5) f ) 1010(BIAS=4)
Zad.2 Przelicz liczby dziesietne na ich 4-bitowy kod binarny znadmiarem 6:a) 5(10) b) −5(10)
c) 8(10) d) 3(10)
e) −4(10) f ) −9(10)
Zad.3 Oblicz:a) 0111(BIAS=8) + 1000(BIAS=8) b) 1111(BIAS=5) + 0001(BIAS=5)
c) 0100(BIAS=9) + 1011(BIAS=9) d) 0011(BIAS=7) − 1001(BIAS=7)
e) 1000(BIAS=6) − 1100(BIAS=6) f ) 1010(BIAS=8) − 1001(BIAS=8)
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 29 / 1
Kodowanie znakówNajbardziej popularnym standardem kodowania znaków jest kodASCII:
zapisuje znaki na 7 bitach
obejmuje kody od 0 do 127; np. wielkie litery alfabetu łacinskiegoodpowiadaja kodom 65 –90, małe 97 –122, cyfry arabskie 48 –57
uzycie pozostałego ósmego bitu bajta tworzy tzw. ExtendedACSII (rozszerzony kod ASCII)
Potrzeba reprezentacji innych znaków (np. narodowych znakówdiakrytycznych) spowodowała potrzebe stworzenia dodatkowychkodów.
Istnieje kilka standardów kodowania polskich znaków, najbardziejpopularne to: ISO-8859-2 (Latin-2) i Windows-1250.
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 30 / 1
Kodowanie znaków
Współczesnym standardem kodowania znaków jest Unicode (UCS):powstał jako próba ujednolicenia kodowania znaków róznychjezyków w Internecie
pierwotnie składał sie z 16 bitów
dzisiejszy standard UCS ISO 10646 operuje na 31-bitach
UCS obejmuje wszystkie podstawowe alfabety swiata:arabski,hebrajski, japonski, koreanski, chinski
kody liter znaków diakrytycznych alfabetu łacinskiego znajduja siew zakresie 256 –383 Unicode.
Bozena Wozna-Szczesniak (AJD) Wstep do Informatyki Wykład 4 31 / 1