Porównanie dziesiętnego i binarnego systemu liczenia

advertisement
1
Henryk Pirek
nauczyciel informatyki
Gimnazjum nr 5
w Piotrkowie Tryb.
Porównanie dziesiętnego i binarnego systemu liczenia
- propozycja metodyczna dla nauczycieli matematyki i informatyki
Wstęp
Systemy (układy) liczbowe są to sposoby zapisywania i nazywania liczb. Rozróżniamy
dwa systemy zapisu:
- niepozycyjny ( addytywny),
- pozycyjny.
W addytywnych systemach liczbowych wartość przedstawionej liczby jest sumą wartości
jej znaków cyfrowych. W tych systemach znaczenie cyfry jest niezależne od miejsca
położenia w liczbie. Addytywny system zapisu liczb wykorzystywany jest między innymi
przez system liczbowy: hieroglificzny, rzymski i alfabetyczny.
W pozycyjnych systemach liczbowych liczbę przedstawiamy jako ciąg cyfr, a wartość
cyfry zależy od miejsca, czyli pozycji jaką ta cyfra przyjmuje w zapisanej liczbie. Każda
pozycja ma określoną i niezmienną wagę.
Wartość liczby n – cyfrowej możemy obliczyć według wzoru:
n −1
∑c ⋅ p = c
i =0
gdzie:
i
i
n −1
⋅
p
n −1
+ ... + c1 ⋅
c ∈ {0,1,2,..., p − 1}, a p
i
1
p +c ⋅ p
0
0
,
– jest podstawą systemu liczenia.
2
Zapis taki nazywamy wielomianowym zapisem liczby w pozycyjnym systemie liczbowym
lub pozycyjnym systemem zapisu liczb, a kolejne potęgi podstawy systemu p nazywamy
rzędami.
W niniejszej pracy porównam dwa pozycyjne systemy liczbowe: dziesiętny i dwójkowy
(binarny).
System dziesiętny używany jest na co dzień, natomiast system dwójkowy jest
powszechnie stosowany w komputerach dzięki następującym własnościom:
1)cyfry 0 i 1 łatwo jest realizować technicznie przez procesy fizyczne, w których wyróżnia
się tylko dwa stany: jeden z nich reprezentuje 0, drugi 1; np. w komputerze element
półprzewodnikowy może znajdować się w jednym z dwóch stanów – przewodzi prąd
elektryczny (cyfra 1) lub nie przewodzi (cyfra 0). Trudne zaś technicznie jest zbudowanie
układu elektronicznego realizującego dziesięć stanów stabilnych odpowiadających cyfrom
0, 1, ..., 9;
2)algorytmy działań w dwójkowym systemie liczbowym są prostsze niż w innych
systemach liczbowych;
3)cyfry 0 i 1 mogą być interpretowane jako wartości logiczne zdań (dwuwartościowy
rachunek zdań); 1 – zdanie prawdziwe, 0 – zdanie fałszywe. Związek dwójkowego
systemu liczbowego z rachunkiem zdań ma duże znaczenie przy projektowaniu
komputerów. Podczas współpracy z komputerem zachodzi konieczność przechodzenia od
zapisu liczb w systemie dziesiątkowym do zapisu liczby w dwójkowym systemie
liczbowym; po wykonaniu przez maszynę obliczeń, wyniki otrzymuje się z powrotem
w systemie dziesiątkowym. Dla określenia jednostki w dwójkowym systemie liczbowym
używa się często symbolu L; nie trzeba wtedy pisać, że podstawa systemu wynosi 2.
Zastosowanie dwójkowego systemu liczbowego w maszynach cyfrowych zaproponował
już matematyk niemiecki G. W. Leibniz.
3
I. Postać liczb w systemie dziesiętnym i dwójkowym
System dziesiątkowy i dwójkowy to pozycyjne systemy liczenia. Dlatego liczby
w tych systemach zapisujemy za pomocą wielomianu.
Wartość liczby w systemie dziesiętnym możemy obliczyć według wzoru:
n −1
∑C
i =0
i
⋅ 10 i = C n−1 ⋅ 10 n −1 + ... + C1 ⋅ 101 + C 0 ⋅ 10 0
gdzie p = 10 i Ci ∈ {0,1,2,...,9}
np. (256)10 = 2 ⋅ 10 2 + 5 ⋅ 101 + 4 ⋅ 10 0 .
Wartość liczby w systemie dwójkowym ( binarnym) obliczamy według wzoru:
n −1
∑C
i =0
i
⋅ 2 i = C n −1 ⋅ 2 n −1 + ... + C1 ⋅ 21 + C 0 ⋅ 2 0
gdzie p = 2 i Ci ∈ {0,1}
Cyfry dwójkowe nazywamy bitami ( binary digit), gdzie:
C0 ⋅ 2 0
- nazywamy najmniej znaczącym bitem, czyli najmłodszym,
C n −1 ⋅ 2 n −1
- nazywamy najbardziej znaczącym bitem, czyli najstarszym.
Każdą liczbę dziesiętną możemy zapisać w systemie dwójkowym i na odwrót.
1. Zamiana liczb dwójkowych na dziesiętne.
Wszelkie wartości i liczby wyobrażamy sobie zazwyczaj jako liczby dziesiętne. Dlatego,
jeżeli zobaczymy liczbę np. 45, wiemy od razu ile to jest. Natomiast nie mówi nam nic
(101101)2. Jest to ta sama liczba, tylko inaczej zapisana. Trzeba ją więc „przeliczyć” na
system dziesiętny.
Wystarczy znać wartości pozycyjne każdego miejsca w liczbie
binarnej, czyli po prostu kolejne potęgi podstawy (liczby 2).
Zaczynając od pozycji zerowej (pierwszej od prawej) i przesuwając się w lewo dodajemy
do siebie wartości pozycyjne tych pozycji, na których stoi cyfra 1. Pozycje, na których jest
0, pomijamy.
4
* Przykład:
Mamy liczbę binarną (110011)2.
- Pozycja 0 (pierwsza z prawej) zawiera cyfrę 1. Wartość dla tej pozycji - pozycji 0
wynosi 20 = 1. Mamy więc na razie 1.
- Na pozycji 1 (druga od prawej) też jest jedynka, a wartość pozycyjna wynosi tu 2.
Dodajemy 1 + 2 = 3.
- Pozycje 2 i 3 zawierają zera, więc je pomijamy.
- Na pozycji 4 stoi cyfra 1. Wartość pozycji 4 wynosi 24 = 16. Dodajemy więc tę liczbę
do uprzednio otrzymanego wyniku: 3 + 16 = 19.
- Kolejna pozycja (5) też zawiera jedynkę, a jej wartość pozycyjna wynosi 25 = 32.
Dodajemy: 19 + 32 = 51.
Uzyskaliśmy liczbę 51. Tyle właśnie równa jest liczba (110011)2.
2. Zamiana liczb dziesiętnych na dwójkowe.
Przeliczanie liczb dziesiętnych na dwójkowe jest nieco trudniejsze niż w kierunku
odwrotnym. Przedstawię to na przykładzie.
Weźmy liczbę dziesiętną 51. Pierwszym krokiem w zamianie tej liczby na binarną jest
znalezienie pozycji w zapisie liczby binarnej o wartości największej mieszczącej się
poniżej wartości przekształcanej liczby. Tutaj wartością taką jest liczba 32. Wartość
następnej pozycji to 64, a to jest już więcej niż 51. 32 to wartość pozycji 5 liczby binarnej
i będzie to najwyższa pozycja w przekształcanej liczbie. Liczba ta będzie miała 6 cyfr
(przypominam, że pozycje liczymy od 0). Jako pierwszą cyfrę zapisujemy 1, gdyż 32
mieści się w liczbie 51. Od 51 odejmujemy teraz wartość zapisanej już liczby, czyli 32.
Otrzymaliśmy 51 – 32 = 19. Tę liczbę musimy zapisać w pozostałych 5 cyfrach liczby
binarnej. Sprawdzamy, czy wartość kolejnej pozycji liczby binarnej mieści się w
otrzymanej reszcie (19). Wartość pozycji 4 wynosi 16. Liczba ta jest mniejsza od 19, więc
zapisujemy kolejną jedynkę. Mamy już 11. Od 19 odejmujemy 16 i otrzymujemy 3.
Sprawdzamy kolejną pozycję liczby binarnej - pozycję 3. Jej wartość wynosi 8. Liczba ta
nie mieści się w otrzymanej reszcie, więc piszemy 0 (mamy 110). Przechodzimy do
5
następnej pozycji - 2. Jej wartość to 4. Nie mieści się w 3. Piszemy 0 – otrzymujemy 1100,
i sprawdzamy następną pozycję - 1. Jej wartość to 2. Mieści się w 3. Piszemy 1, a od 3
odejmujemy 2. Zostało tylko 1. Pozostała nam ostatnia pozycja 0, której wartość
pozycyjna wynosi 1. Do naszej liczby binarnej dopisujemy więc 1 i mamy gotową liczbę
(110011)2, która równa jest (51)10. Możemy to zapisać następująco:
(51)10
= 1 ⋅ 2 5 + 1 ⋅ 2 4 + 0 ⋅ 2 3 + 0 ⋅ 2 2 + 1 ⋅ 21 + 1 ⋅ 2 0 = (110011)2
51 = 32 + 16 + 0 + 0 + 2 + 1
Liczbę zapisaną w systemie dziesiętnym możemy również zamienić na binarną dzieląc ją
przez 2 i zapisując kolejno otrzymywane reszty (0 lub 1).
Na przykład (51)10 = 51 : 2 = 25 reszty 1
25 : 2 = 12 reszty 1
12 : 2 = 6 reszty 0
6 : 2 = 3 reszty 0
3 : 2 = 1 reszty 1
1 : 2 = 0 reszty 1 Czytając od dołu otrzymujemy (110011)2.
3. Zamiana liczb całkowitych ujemnych na dwójkowe.
W jaki sposób komputer widzi liczby ujemne ?
Jeżeli mamy liczbę np.5 = (101)2, to liczbę ujemną otrzymamy po postawieniu kreski,
czyli -5. Można równie dobrze zapisać -101. Komputer niestety nie może tak po prostu
zapisać minusa, gdyż zna tylko dwa znaki: 0 i 1. Dlatego komputery stosują zapis tzw.
uzupełnienia do dwóch.
6
Postać liczby ujemnej zależy od tego, na jakich liczbach operuje procesor. Dla
uproszczenia weźmiemy procesor 16-bitowy (teraz już prawie zabytek), który operuje na
16-bitowych (16-cyfrowych binarnych) liczbach całkowitych. Liczba 18 będzie w nim
reprezentowana jako 0000000000010010 (szesnaście cyfr). Jeżeli chcemy uzyskać ujemną
wartość tej liczby, zapisujemy najpierw jej tzw. uzupełnienie do jednego, zwane częściej
negacją, uzyskiwane przez odwrócenie każdej cyfry (jedynki na zera, a zera na jedynki).
Uzupełnieniem do jednego naszej przykładowej liczby jest więc 1111111111101101.
Teraz, aby uzyskać uzupełnienie do dwóch tej liczby, które będzie już właściwą liczbą
ujemną,
należy
dodać
jeden
do
uzupełnienia
do
jednego.
Otrzymaliśmy
1111111111101110. Podsumowując: negujemy cyfry i dodajemy jeden.
*Przykład:
Zapisać liczbę (-7) w systemie binarnym za pomocą 8 bitów.
(7)10 = (00000111)2
(negujemy)
( 11111000 )2
+ ( 00000001 )2
( 11111001 )2 = (-7)10
4. Zamiana ułamka zwykłego, w którym mianownik jest potęgą dwójki.
Aby zapisać ułamek w systemie binarnym, korzystamy z ogólnego wzoru, gdzie
podstawa wynosi 2, a wykładniki potęg są ujemne i wyznaczają wagi poszczególnych
cyfr:
k
C1 ⋅ 2 −1 + C 2 ⋅ 2 − 2 + ... + C k ⋅ 2 − k = ∑ C i ⋅ 2 −i
i=0
C i - na prawo od przecinka
7
* Przykłady:
1
= 1 ⋅ 2 −1 = (0,1)2 ,
2
1
= 0 ⋅ 2 −1 + 1 ⋅ 2 − 2 = (0,01)2 ,
4
3 1 1
= + = 1 ⋅ 2 −1 + 1 ⋅ 2 − 2 = (0,11)2 .
4 2 4
5. Zamiana ułamka dziesiętnego.
Aby zapisać ułamek dziesiętny w postaci liczby binarnej mnożymy część
ułamkową przez 2. Jeżeli iloczyn ma więcej cyfr niż część ułamkowa wpisujemy 1 po
lewej stronie kreski. Liczbę binarną odczytujemy od góry.
* Przykłady:
- Zapisać w postaci binarnej ( 0,125)10.
x2
0,
0
0
1
125
250 bo 125 x 2 = 500
500 bo 500 x 2 = 1000
0
( 0,125)10 = ( 0,001)2
- Zapisać w postaci binarnej ( 0,4)10.
okres
x2
0,
0
1
1
0
0
1
1
4
8
6
2
4
8
6
2
bo
bo
bo
bo
bo
bo
bo
4x2=8
8 x 2 = 16
6 x 2 = 12
2x2=4
4x2=8
8 x 2 = 16
6 x 2 = 12
( 0,4)10 = 0,0110011... = [0,(0110)]2
6. Przedstawianie ułamków zwykłych w systemie dziesiątkowym i binarnym.
8
Ułamki zwykłe w systemie dziesiętnym
Ułamki zwykłe w systemie binarnym
Przykłady:
Przykłady:
3
1
-1
-2
= 0,75 = 7⋅10 + 5⋅10 = 7⋅
+ 5⋅ 1
10
100
4
3
1
1
-1
-2
= 0,11 = 1⋅2 + 1⋅2 = 1⋅ + 1⋅
2
4
4
0, 7 5
3,
:4
0
30
28
=20
20
==
0, 1 1
3,
:4
0
6
4
=4
4
==
Mnożymy 3 (3-0=3) przez 10 (bo
system dziesiątkowy) i dlatego
otrzymujemy 30
Mnożymy 2 (30-28=2) przez 10 (bo
system dziesiątkowy) i dlatego
otrzymujemy 20
Mnożymy 3 (3-0=3) przez 2 (bo
system dwójkowy) i dlatego
otrzymujemy 6
Mnożymy 2 (6-4=2) przez 2 (bo
system dwójkowy) i dlatego
otrzymujemy 4
5
-1
-2
-3
= 0,625 = 6⋅10 + 2⋅10 + 5⋅10
8
5
1
1
-1
-2
-3
= 0,101 = 1⋅2 + 0⋅2 + 1⋅2 = 1⋅ + 0⋅ +
2
4
8
0, 6 2 5
5,
:8
0
50
48
=20
16
=40
40
==
+1⋅ 1
8
Mnożymy 5 (5-0=5) przez 10 (bo
system dziesiątkowy) i dlatego
otrzymujemy 50
Mnożymy 2 (50-48=2) przez 10 (bo
system dziesiątkowy) i dlatego
otrzymujemy 20
Mnożymy 4 (20-16=4) przez 10 (bo
system dziesiątkowy) i dlatego
otrzymujemy 40
0, 1 0 1
5,
:8
0
10
8
= 4
0
8
8
=
Mnożymy 5 (5-0=5) przez 2 (bo
system dwójkowy) i dlatego
otrzymujemy 10
Mnożymy 2 (10-8=2) przez 2 (bo
system dwójkowy) i dlatego
otrzymujemy 4
Mnożymy 4 (4-0=4) przez 2
(bo system dwójkowy) i
dlatego otrzymujemy 8
2
= 0,666... = 0,(6) – ułamek okresowy
3
2
= 0,1010... = 0,(10) – ułamek okresowy
3
0, 6 6 6 ..
2,
:3
0
20
18
=20
18
=20
18
= 2...
0, 1 0 1 0...
2,
:3
0
4
3
2
0
4
3
2
0
4...
Mnożymy 2 (2-0=2) przez 10 (bo
system dziesiątkowy) i dlatego
otrzymujemy 20
Mnożymy 2 (20-18=2) przez 10
(bo system dziesiątkowy) i
dlatego otrzymujemy 20
Mnożymy 2 (20-18=2) przez 10
(bo system dziesiątkowy) i dlatego
otrzymujemy 20
Mnożymy 2 (2-0=2) przez 2 (bo
system dwójkowy) i dlatego
otrzymujemy 4
Mnożymy 1 (4-3=1) przez 2 (bo
system dwójkowy) i dlatego
otrzymujemy 2
Mnożymy 2 (2-0=2) przez 2 (bo
system dwójkowy) i dlatego
otrzymujemy 4
Mnożymy 1 (4-3=1) przez 2 (bo
system dwójkowy) i dlatego
otrzymujemy 2
Mnożymy 2 (2-0=2) przez 2 (bo system
dwójkowy) i dlatego otrzymujemy 4
9
Nie każdy ułamek zwykły skończony w systemie dziesiątkowym jest taki sam jak
w systemie dwójkowym np.:
1
= (0,2)10 = [0,(0011)]2
5
Jak widać w systemie dziesiątkowym jest on skończony, natomiast w systemie
dwójkowym jest okresowy o okresie (0011).
7. Zaokrąglanie liczb w systemie binarnym.
Znak przybliżenia z liczbą pod spodem oznacza do którego miejsca po przecinku
następuje przybliżenie. Dodajemy liczbę ograniczoną do tylu miejsc po przecinku,
ile rozpatrujemy, do następnej cyfry:
* Przykłady:
0,0001111010 ≈ 0,0 = 0
1
0,0001111010 ≈ 0,00 = 0
2
0,0001111010 ≈ 0,001
3
0,0001111010 ≈ 0,0010
4
0,0001111010 ≈ 0,00100
5
0,0001111010 ≈ 0,001000
6
II Działania w systemie dziesiętnym i dwójkowym
Działania w systemie dwójkowym możemy wykonywać według ogólnie znanych zasad
w systemie dziesiętnym. Należy jedynie pamiętać, że:
1 + 1 = 10
1 + 1 + 1 = 11
1 + 1 + 1 + 1 = 100
1 + 1 + 1 + 1 + 1 = 101
1 + 1 + 1 + 1 + 1 + 1 = 110
1 + 1 + 1 + 1 + 1 + 1 + 1 = 111
1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 1000
0–0=0
1–0=1
1–1=0
10 – 1 = 1
10
Działania w systemie dziesiętnym
Działania w systemie binarnym
DODAWANIE
+
1
1 1 6
5 4
1 1
1
1 1 1 0 1 0 0
+
1 1 0 1 1 0
1 7 0
1 0 1 0
1 0 1 0
ODEJMOWANIE
-
1 4 9
1 0 5
-
0 1 10 0 10
1 0 0 1 0 1 0 1
1 1 0 1 0 0 1
0 0 1
= 4 4
0 1 1 0 0
MNOŻENIE
x
4 3
1 1
4 3
+ 4 3
4 7 3
1 0 1 0 1 1
x
1 0 1 1
1 1 1
1
1 0
0 0 0
+ 1 0 1 0
1 1 1 0
1
0
1
0
1
1
1
1
0
0
1
1
1
0 1 1
1 1
0
0 0 1
11
DZIELENIE
1 1 1 0, 1 0 0 1 1 ...
1 4, 6
7
- 5
2
- 2
=
-
3 : 5
= 14,6
3
0
3 0
3 0
= =
1 0
1
= 1
=
0
0
0
1
=
-
1
1
0
0
1
1
=
0 0 1 : 1 0 1
0
1
1 0
0 1
= 1 1 0
- 1 0 1
= = 1 0 0 0
1 0 1
= =1 1 0
1 0 1
= = 1 0 ...
1001001 : 101 = 1110,100110... = 1110,(1001)
Literatura:
1. Zinajda
Krawcewicz,
„Zadania
dla
uczniów
klas
V-VIII
uzdolnionych
matematycznie”, WSiP W-wa 1976
2. Stanisław Kowal, „Przez rozrywkę do wiedzy”, Wydawnictwo Naukowo Techniczne, W-wa 1985
Download