13
Dodatek A. Dwójkowo i szesnastkowo Podstawy arytmetyki poznaliśmy w tak zamierzchłej przeszłości, że trudno sobie wyobrazić co by było, gdybyśmy nie posiadali tej wiedzy. Gdy patrzymy na znaki 145, to natychmiast wiemy, że chodzi o liczbę „sto czterdzieści pięć”. Zrozumienie sposobu funkcjonowania systemu dwójkowego i szesnastkowego wymaga innego spojrzenia na liczbę 145, a mianowicie postrzegania jej nie jako liczby, ale jako jej kodu. Na początku wyobraź sobie powiązanie pomiędzy liczbą trzy a „3”. Cyfra „3” jest znaczkiem na papierze; liczba trzy jest ideą. Cyfra służy do reprezentowania liczby. To rozróżnienie może być łatwiejsze do zrozumienia, jeśli uświadomimy sobie, że zarówno trzy jak i 3, |||, III oraz *** reprezentują tę samą ideę liczby trzy. W systemie dziesiętnym (czyli, jak mówią matematycy, o podstawie 10) do reprezentowania wszystkich liczb używamy cyfr 0, 1, 2, 3, 4, 5, 6, 7, 8 oraz 9. Jak jest reprezentowana liczba 10? Można sobie wyobrazić, że do reprezentowania liczby dziesięć używamy litery A, lub że używamy zapisu IIIIIIIIII. Rzymianie używali znaku X. W systemie arabskim, z którego obecnie korzystamy, do reprezentowania wartości wykorzystujemy cyfry i ich pozycje. Pierwsza (położona najbardziej na prawo) kolumna jest

rdodA-06.doc

  • Upload
    greg

  • View
    214

  • Download
    2

Embed Size (px)

Citation preview

Szablon dla tlumaczy

2

Cz I ( Podstawy obsugi systemu WhizBang (Nagwek strony)

Dodatek A.Dwjkowo i szesnastkowo

Podstawy arytmetyki poznalimy w tak zamierzchej przeszoci, e trudno sobie wyobrazi co by byo, gdybymy nie posiadali tej wiedzy. Gdy patrzymy na znaki 145, to natychmiast wiemy, e chodzi o liczb sto czterdzieci pi.

Zrozumienie sposobu funkcjonowania systemu dwjkowego i szesnastkowego wymaga innego spojrzenia na liczb 145, a mianowicie postrzegania jej nie jako liczby, ale jako jej kodu.

Na pocztku wyobra sobie powizanie pomidzy liczb trzy a 3. Cyfra 3 jest znaczkiem na papierze; liczba trzy jest ide. Cyfra suy do reprezentowania liczby.

To rozrnienie moe by atwiejsze do zrozumienia, jeli uwiadomimy sobie, e zarwno trzy jak i 3, |||, III oraz *** reprezentuj t sam ide liczby trzy.

W systemie dziesitnym (czyli, jak mwi matematycy, o podstawie 10) do reprezentowania wszystkich liczb uywamy cyfr 0, 1, 2, 3, 4, 5, 6, 7, 8 oraz 9. Jak jest reprezentowana liczba 10?

Mona sobie wyobrazi, e do reprezentowania liczby dziesi uywamy litery A, lub e uywamy zapisu IIIIIIIIII. Rzymianie uywali znaku X. W systemie arabskim, z ktrego obecnie korzystamy, do reprezentowania wartoci wykorzystujemy cyfry i ich pozycje. Pierwsza (pooona najbardziej na prawo) kolumna jest uywana dla jedynek, a druga (w lew stron) jest uywana dla dziesitek. Tak wic liczba pitnacie jest reprezentowana jako 15 (czytaj: jeden, pi), czyli jedna dziesitka i pi jedynek.

Pojawia si regularno, dziki ktrej mona dokona pewnej generalizacji:

1. System o podstawie 10 uywa cyfr od 0 do 9.

2. Kolumny s potgami dziesiciu: 1, 10, 100, itd.

3. Jeli trzecia kolumna reprezentuje setki, to najwiksz liczb, jak mona zapisa w dwch kolumnach, jest 99. Innymi sowy, w n kolumnach moemy reprezentowa liczby od 0 do (10n1). Tak wic, w trzech kolumnach moemy reprezentowa liczby od 0 do (1031), czyli od 0 do 999.

Inne podstawy

To, e korzystamy z podstawy 10, nie jest przypadkiem: w kocu mamy po dziesi palcw. Mona sobie jednak wyobrazi inn podstaw. Uywajc regu okrelonych dla podstawy 10, moemy opisa podstaw 8:

1. System o podstawie 8 uywa cyfr od 0 do 7.

2. Kolumny s potgami omiu: 1, 8, 64, itd.

3. W n kolumnach moemy zapisywa liczby od 0 do 8n1.

W celu rozrniania liczb o rnych podstawach, podstawy zapisujemy jako indeks dolny tu za ostatni cyfr liczby. Liczba pitnacie przy podstawie 10 jest zapisywana jako 1510 i odczytywana jako jeden, pi, dziesitnie.

Tak wic, reprezentujc liczb 1510 w systemie o podstawie 8, napisalibymy 178. Naley j odczytywa jako jeden, siedem, semkowo. Zwr uwag, e mona to odczytywa jako pitnacie, gdy t warto reprezentuje.

Dlaczego 17? Jedynka oznacza jedn semk, a sidemka oznacza siedem jedynek. Jedna semka plus siedem jedynek daje pitnacie. Wemy pitnacie gwiazdek:

***** *****

*****

Naturalnym dziaaniem bdzie utworzenie dwch grup: grupy dziesiciu gwiazdek i grupy piciu gwiazdek. Dziesitnie byyby one reprezentowane jako 15 (jedna dziesitka i pi jedynek). Mona take pogrupowa gwiazdki nastpujco:

**** *******

****

to jest, jako osiem gwiazdek i siedem. W systemie semkowym zapisalibymy to jako 178, czyli jako jedn semk i siedem jedynek.

Wok podstaw

Liczb pitnacie moemy w systemie dziesitnym zapisywa jako 15, w systemie dziewitkowym jako 169, w systemie semkowym jako 178, a czy w systemie sidemkowym jako 217. Dlaczego 217? W systemie sidemkowym nie ma cyfry 8. Aby wyrazi liczb pitnacie, potrzebujemy dwch sidemek i jednej jedynki.

Jak mona to uoglni? Aby zamieni liczb o podstawie 10 na liczb o podstawie 7, pomyl o kolumnach: w systemie sidemkowym wystpuj kolumny dla jedynek, sidemek, czterdziestek dziewitek, trzysta czterdziestek trjek i tak dalej. Dlaczego takie kolumny? Poniewa reprezentuj 70, 71, 72, 74 i tak dalej.

Pamitajmy, e dowolna liczba podniesiona do zerowej potgi (na przykad 70) rwna si 1, kada liczba podniesiona do pierwszej potgi (na przykad 71) rwna si samej sobie, kada liczba podniesiona do drugiej potgi rwna si wynikowi przemnoenia jej przez siebie (72 = 7*7 = 49), a kada liczba podniesiona do trzeciej potgi odpowiada trzykrotnemu przemnoeniu jej przez siebie (73 = 7*7*7 = 343).

Wykonaj tabel:

Kolumna4321

Potga73727170

Warto3434971

Pierwszy wiersz reprezentuje numer kolumny. Drugi wiersz reprezentuje potg sidemki. Trzeci wiersz reprezentuje warto dziesitn kadej liczby w drugim wierszu.

Aby zamieni wartoci dziesitne na liczby sidemkowe, postpuj zgodnie z ponisz procedur: sprawd liczb i zdecyduj, ktrej kolumny uy jako pierwszej. Jeli liczb jest na przykad 200, wiemy, e kolumna 4 (343) bdzie zawieraa 0 i nie musimy si ni martwi.

Aby dowiedzie si, ile 49-ek jest w liczbie 200, podzielimy 200 przez 49. Otrzymujemy 4, wic w kolumnie trzeciej umieszczamy cyfr 4 i sprawdzamy reszt z dzielenia: 4. W liczbie 4 nie ma adnej sidemki, wic w kolumnie sidemek umieszczamy cyfr 0. W liczbie cztery s cztery jedynki, wic w kolumnie jedynek umieszczamy cyfr 4. Odpowiedzi jest 4047.

Kolumna4321

Potga73727170

Warto3434971

200 sidemkowo0404

Warto dziesitna04*49 = 19604*1 = 4

W tym przykadzie cyfra 4 w trzeciej kolumnie reprezentuje warto dziesitn 196, a cyfra 4 w pierwszej kolumnie reprezentuje warto 4. 196+4 = 200. Tak wic 4047 = 20010.

Przejdmy nastpnego przykadu.

Aby zamieni liczb 968 na liczb szstkow:

Kolumna54321

Potga6463626160

Warto12962163661

Sprawd, czy wiesz, dlaczego kolumny reprezentuj takie wartoci. Pamitaj, e 63 = 6*6*6 = 216.

Aby wyznaczy reprezentacj liczby 986 w systemie szstkowym, zaczniemy od kolumny 5. Ile 1296-tek mieci si w 986? adna, wic w kolumnie 5. zapisujemy 0. Jeli podzielimy 968 przez 216, to otrzymamy 4 z reszt 104. W kolumnie 4. znajdzie si cyfra 4. To jest, ta kolumna bdzie reprezentowa 4*216 (864).

Musimy teraz wyrazi pozosta warto (968-864 = 104). Podzielenie 104 przez 36 daje 2 z reszt 32. Kolumna trzy bdzie zawiera cyfr 2. Podzielenie 32 przez 6 daje 5 z reszt 2. Tak wic otrzymujemy liczb 42526.

Kolumna54321

Potga6463626160

Warto12962163661

986 szstkowo04252

Warto dziesitna04*216=8642*36=725*6=302*1=2

864+72+30+2 = 968

Dwjkowo

Ostatecznym etapem tego systemu jest system o podstawie 2. S w nim tylko dwie cyfry: 0 i 1. Kolumny to

Kolumna87654321

Potga2726252423222120

Warto1286432168421

Aby zamieni liczb 88 na liczb dwjkow, postpujemy zgodnie z t sam procedur: w 88 nie ma 128-ek, wic w kolumnie smej wpisujemy cyfr 0.

W 88 jest jedna szedziesitka czwrka, wic do kolumny 7 wpisujemy cyfr 1. Zostaje nam reszta wynoszca 24. W 24 nie ma trzydziestek dwjek, wic kolumna 6 zawiera cyfr 0.

W 24 mieci si jedna szesnastka, wic kolumna pi zawiera cyfr 1. Pozostaje nam reszta 8. W 8 jest jedna semka, wic kolumna 4. bdzie zawiera cyfr 1. Nie ma ju adnej reszty, wic pozostae kolumny bd zawiera zera.

Kolumna87654321

Potga2726252423222120

Warto1286432168421

88 dwjkowo01011000

Warto0640168000

Aby sprawdzi wynik, zamiemy to z powrotem na liczb o podstawie dziesi:

1 * 64 = 64

0 * 32 = 0

1 * 16 = 16

1 * 8 = 8

0 * 4 = 0

0 * 2 = 0

0 * 1 = 0

88

Dlaczego podstawa 2?

Podstawa 2 peni wan rol w programowaniu, gdy dokadnie odpowiada temu, co moe by w komputerze reprezentowane. Komputery w rzeczywistoci nie wiedz nic o literach, cyfrach, instrukcjach czy programach. W swoim rdzeniu s jedynie ukadami elektronicznymi, w ktrych w danym punkcie moe wystpowa wiksze albo bardzo mae napicie.

Aby zachowa prostot konstrukcji, inynierowie nie traktuj napicia jako skali relatywnej (niskie napicie, wysze napicie, bardzo wysokie napicie czy ogromne napicie), ale raczej jako skal o dwch stanach (napicie wystarczajce lub napicie niewystarczajce). Zamiast jednak mwi wystarczajce lub niewystarczajce, mwi po prostu tak lub nie. Tak lub nie, czyli prawda lub fasz, moe by reprezentowane jako 1 lub 0. Zgodnie z konwencj, 1 oznacza prawd lub Tak, ale to tylko konwencja; rwnie dobrze mogoby oznacza fasz lub Nie.

Gdy zauwaysz t regu, potga systemu dwjkowego objawi si w caej okazaoci: za pomoc zer i jedynek mona odda stan kadego ukadu (jest napicie lub go nie ma). Wszystkie komputery znaj tylko dwa stany: wczony = 1 oraz wyczony = 0.

Bity, bajty, nible

Gdy podjto decyzjm by reprezentowa prawd i fasz jedynkami i zerami, bardzo wane stao si pojcie bitu (od binary digit, cyfra binarna). Poniewa pierwsze komputery mogy przesa jednoczenie osiem bitw, wic naturalnie pierwszy kod zapisywano, uywajc liczb 8-bitowych nazywanych bajtami (ang. byte).

UWAGAW gwarze programistycznej powka bajtu (4 bity) jest nazywana niblem (ang. nybble).

Za pomoc omiu bitw mona reprezentowa do 256 rnych wartoci. Dlaczego? Sprawd kolumny: gdy wszystkie osiem bitw jest ustawionych (1), wartoci jest 255 (128+64+32+16+8+4+2+1). Jeli nie jest ustawiony aden (wszystkie bity s wyzerowane, czyli maj warto 0), wtedy wartoci jest 0. Od 0 do 255 to 256 moliwych stanw.

Co to jest KB?

Okazuje si, e 210 (1024) to w przyblieniu 103 (1 000). Ten zwizek by zbyt dobry, aby go nie zauway, wic komputerowi specjalici zaczli nazywa 210 bajtw kilobajtem, czyli KB, zapoyczajc przedrostek kilo (k) oznaczajcy tysic. Dla wskazania, e chodzi o warto 1024, a nie 1000, komputerowe kilo oznacza si du liter K.

Rwnie 1024*1024 (1 048 576) jest na tyle bliskie miliona, e otrzymao oznaczenie 1 MB, czyli megabajt, za 1 024 megabajtw jest nazywanych gigabajtem (giga to przedrostek oznaczajcy tysic milionw, czyli miliard).

Liczby dwjkowe

Komputery koduj kad warto za pomoc zer i jedynek. Instrukcje maszynowe s zakodowane jako serie jedynek i zer, nastpnie s interpretowane przez ukady procesora. Zestawy zer i jedynek mog by zamienione na liczby, ale traktowanie tych liczb jako posiadajcych jakie specyficzne znaczenie byoby bdem.

Na przykad, procesor Intel 8086 interpretuje wzorzec bitw 1001 0101 jako instrukcj. Oczywicie, moemy zamieni te bity na liczb dziesitn 149, ale ta warto sama w sobie nie ma dla nas adnego znaczenia.

Czasem liczby s instrukcjami, czasem wartociami, a czasem kodami. Jednym z wanych, standardowych zestaww kodw jest zestaw ASCII. W zestawie tym kada litera, cyfra i znak przestankowy ma przydzielon siedmiobitow reprezentacj. Na przykad, maa litera a jest reprezentowana jako 0110 0001. Nie jest to liczba, cho mona j zamieni na liczb 97 w systemie dziesitnym (64+32+1). Wanie w tym sensie mwi si, e litera a to 97 w ASCII, cho w rzeczywistoci kodem litery a jest dwjkowa reprezentacja wartoci 97 (0110 0001), a warto dziesitna 97 stanowi tylko uatwienie dla ludzi.

Szesnastkowo

Poniewa liczby dwjkowe s trudne do odczytania, stworzono prostszy sposb ich reprezentowania. Przejcie z systemu dwjkowego na dziesitny wymaga sporo przeprowadzenia skomplikowanych operacji na liczbach, ale okazuje si, e przejcie z podstawy 2 do podstawy 16 jest proste, gdy istnieje bardzo dobry skrt.

Aby zrozumie ten proces, musisz najpierw zrozumie system o podstawie 16, zwany systemem szesnastkowym lub heksadecymalnym. Przy podstawie 16 mamy do dyspozycji szesnacie cyfr: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E oraz F. Ostatnie sze znakw, litery od A do F, zostay wybrane, poniewa atwo mona je wpisa z klawiatury (i wywietli na wywietlaczu siedmiosegmentowym). Kolumny w systemie szesnastkowym to:

Kolumna4321

Potga163162161160

Warto4096256161

Aby zamieni liczb z systemu szesnastkowego na dziesitny, moemy mnoy. Tak wic liczba F8C reprezentuje:

F * 256 = 15 * 256 = 3840

8 * 16 = 128

C * 1 = 12 * 1 = 12

3980

(Pamitaj, e F16 to 1510)

Najlepiej przeprowadzi zamian liczby FC na dwjkow, zamieniajc j najpierw na liczb dziesitn, a nastpnie na dwjkow:

F * 16 = 15 * 16 = 240

C * 1 = 12 * 1 = 12

252

Zamiana 252 na liczb dwjkow wymaga uycia tablicy:

Kolumna987654321

Potga282726252423222120

Warto2561286432168421

Nie ma 256-ek.

1*128 = 128. 252128 = 124

1*64 = 64. 12464 = 60

1*32 = 32. 6032 = 28

1*16 = 16. 2816=12

1*8 = 8. 128 = 4

1*4 = 4. 44 = 0

0*2 = 0

0*1 = 0

124+60+28+12+4 = 252.

Tak wic FC16 w systemie dwjkowym to 1111 1100.

Okazuje si, e gdy potraktujemy t liczb dwjkow jako dwa zestawy czterech cyfr (1111 1100), moemy dokona magicznego przeksztacenia.

Prawy zestaw to 1100. Dziesitnie to 12, a szesnastkowo C. (1*8 + 1*4 + 0*2 + 0*1).

Lewy zestaw to 1111, czyli dziesitnie 15, a szesnastkowo F.

Tak wic mamy:

1111 1100

F C

Umiemy dwie cyfry szesnastkowe razem i otrzymamy FC, ktre jest wartoci szesnastkow binarnej liczby 1111 1100. Ten skrt dziaa! Moemy wzi liczb binarn o dowolnej dugoci, podzieli j na zestawy po cztery bity, zamieni kady z zestaww na cyfr szesnastkow i poczy otrzymane cyfry tak, aby otrzyma wynik w systemie szesnastkowym. Oto duo wiksza liczba:

1011 0001 1101 0111

Aby sprawdzi, czy nasze zaoenia s waciwe, najpierw zamiemy t liczb na dziesitn.

Wartoci kolumn moemy obliczy poprzez ich podwajanie. Kolumna pooona najbardziej na prawo ma warto 1, nastpna 2, nastpne 4, 8, 16 i tak dalej.

Zaczniemy od kolumny pooonej najbardziej na prawo, ktra, liczc dziesitnie, ma wag 1. Mamy jedynk, wic ta kolumna jest warta 1. Nastpna kolumna ma wag 2. W tej kolumnie take mamy jedynk, wic dodajemy 2 i otrzymujemy sum wynoszc 3.

Nastpna kolumna ma wag 4 (podwajamy wag poprzedniej kolumny). W zwizku z tym otrzymujemy 4+2+1=7.

Kontynuujemy t procedur dla kolejnych kolumn:

1x1 1

1x2 2

1x4 4

0x8 0

1x16 16

0x32 0

1x64 64

1x128 128

1x256 256

0x512 0

0x1024 0

0x2048 0

1x4096 4 096

1x8192 8 192

0x16384 0

1x32768 32 768

Razem 45 527

Zamiana na liczb szesnastkow wymaga zastosowania tablicy z wartociami szesnastkowymi.

Kolumna4321

Potga163162161160

Warto4096256161

Mamy jedenacie 4096-ek (45 056) z reszt 471. W 471 jest jedna 256-ka z reszt 215. W 215 jest trzynacie 16-ek (208) z reszt 7. Tak wic szukana liczba szesnastkowa to B1D7.

Sprawdzamy obliczenia:

B (11) * 4096 = 45 056

1 * 256 = 256

D (13) * 16 = 208

7 * 1 = 7

Razem 45 527

Skrcone rozwizanie polega na podzieleniu pierwotnej liczby dwjkowej 1011000111010111 na grupy po cztery bity: 1011 0001 1101 0111. Kad z grup mona wtedy przedstawi jako cyfr szesnastkow:

1011 =

1 x 1 = 1

1 x 2 = 2

0 x 4 = 0

1 x 8 = 8

Razem 11

Hex: B

0001 =

1 x 1 = 1

0 x 2 = 0

0 x 4 = 0

0 x 8 = 0

Razem 1

Hex: 1

1101 =

1 x 1 = 1

1 x 2 = 0

1 x 4 = 4

1 x 8 = 8

Razem 13

Hex: D

0111 =

1 x 1 = 1

1 x 2 = 2

1 x 4 = 4

0 x 8 = 0

Razem 7

Hex: 7

Razem Hex: B1D7

Voila! Skrcona procedura zamiany, liczby dwjkowej na szesnastkow, daa nam ten sam wynik, co wersja dusza.

Przekonasz si, e programici bardzo czsto korzystaj z liczb szesnastkowych; ale okae si take, e bardzo dugo mona si bez nich obej!

A take od kawaka informacji, gdy bit to po angielsku take kawaek. przyp. tum.

2F:\korekta\rdodA-06.doc