You are on page 1of 10

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 15 10 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 17 8, 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 (7 2 = 7*7 = 49), a
kada liczba podniesiona do trzeciej potgi odpowiada dwutrzykrotnemu przemnoeniu jej przez
siebie (73 = 7*7*7 = 343).
Wykonaj tabel:
Kolumna

3
3

2
2

1
1

Potga

70

Warto

343

49

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.
Kolumna

3
3

2
2

1
1

Potga

70

Warto

343

49

200 sidemkowo

Warto
dziesitna

4*49 = 196

4*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:

Kolumna

4
4

3
3

2
2

1
1

Potga

60

Warto

1296

216

36

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 Ppodzielimyenie 968
przez 216, dajeto 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.
Kolumna

4
4

3
3

2
2

1
1

Potga

60

Warto

1296

216

36

986 szstkowo

Warto
dziesitna

4*216=864

2*36=72

5*6=30

2*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
Kolumna

7
7

6
6

5
5

4
4

3
3

2
2

1
1

Potga

20

Warto

128

64

32

16

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.
Kolumna

Potga

27

26

25

24

23

22

21

20

Warto

128

64

32

16

88
dwjkowo

Warto

64

16

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


1
0
1
1
0
0
0

*
*
*
*
*
*
*

64 = 64
32 = 0
16 = 16
8 =
8
4 =
0
2 =
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 binarna1). Poniewa pierwsze komputery mogy przesa
jednoczenie osiem bitw, wic naturalnie pierwszy kod zapisywano, uywajc liczb 8-bitowych
nazywanych bajtami (ang. byte).

UWAGA W 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
wewntrznejakie 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
1

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

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:
Kolumna

Potga

163

162

161

160

Warto

4096

256

16

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:

Kolumna

8
8

7
7

6
6

5
5

4
4

3
3

2
2

1
1

Potga

20

Warto

256

128

64

32

16

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
1x2
1x4
0x8
1x16
0x32
1x64
1x128
1x256
0x512
0x1024
0x2048
1x4096
1x8192
0x16384
1x32768
Razem

4
8
32
45

1
2
4
0
16
0
64
128
256
0
0
0
096
192
0
768
527

Zamiana na liczb szesnastkow wymaga zastosowania tablicy z wartociami szesnastkowymi.


Kolumna

Potga

163

162

161

160

Warto

4096

256

16

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
1 * 256
=
D (13) * 16
=
7 * 1
=
Razem
45

056
256
208
7
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 =
0 x 2 =
0 x 4 =
0 x 8 =
Razem 1
Hex: 1

1
0
0
0

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 x 2 =
1 x 4 =
0 x 8 =
Razem 7
Hex: 7

1
2
4
0

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 przez dugibardzo dugo mona si obej bez nich obej!

You might also like