Wstep do Informatyki - wozna. · PDF fileWstep˛ do Informatyki Bozena Wozna-Szcz´ e˙...

Post on 08-Feb-2018

229 views 5 download

Transcript of Wstep do Informatyki - wozna. · PDF fileWstep˛ do Informatyki Bozena Wozna-Szcz´ e˙...

Wstep do Informatyki

Bozena Wozna-Szczesniakbwozna@gmail.com

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