Zamiana liczby dziesiętnej na dwójkową.
eprezentacja ilości w systemie pozycyjnym liczb o dowolnej bazie przedstawiana jest jako szereg potęgowy jak niżej:
Q = k=nΣk=0 akbk = anbn + an-1bn-1 + . . . + akbk + . . . + a2b2 + a1b1 + a0b0
gdzie
b jest ustaloną bazą system,
n, k to liczby całkowite, natomiast
a jest liczbą całkowitą pomiędzy
0 and
b-1. Zapis samej liczby wygląda następująco:
anan-1 . . . ak . . a2a1a0
Przykład:
236024569 dziesiętna oraz
100110001 dwójkowa posiadają następujące rozwinięcia:
236024569 =
2*10
8 +
3*10
7 +
6*10
6 +
0*10
5 +
2*10
4 +
4*10
3 +
5*10
2 +
6*10 +
9
oraz odpowiednio:
100110001 =
1*2
8 +
0*2
7 +
0*2
6 +
1*2
5 +
1*2
4 +
0*2
3 +
0*2
2 +
0*2 +
1
Dla liczb mniejszych od jedności wykładnik potęgi staje się ujemny niezależnie od systemu
Q = k=nΣk=-m akbk = anbn + . . . + akbk + . . . + a1b1 + a0b0 + a-1b-1 + a-2b-2 + . . . + a-mb-m
W zapisie liczby część całkowita musi być oddzielona od ułamkowej kropką, bądź przecinkiem , zależnie od przyjętej umowy.
Aby zamienić liczbę dziesiętną na jej ekwiwalent dwójkowy musimy znaleźć maksymalną potęgę
n liczby 2, która jeszcze mieści się w danej liczbie, a zatem spełnia poniższą nierówność:
2n < D < 2n+1
where
D jest liczbą dziesiętną przeznaczoną do zamiany na dwójkową.
Niechaj nasz najwyższy wykładnik potęgi 2 wynosi
n zatem wartość potęgi wynosi
2n. Spełnia ona nasze wymagania, a zatem zapisujemy
1, a następnie odejmujemy wartość potęgi 2
n od naszej liczby. Otrzymujemy resztę, którą traktujemy jak następuje.
Sprawdzamy czy wartość potęgi 2
n-1 czyli o wykładniku mniejszym o 1 od poprzedniego mieści się w naszej reszcie. Jeśli tak zapisujemy
1 (następną jedynkę), a jeśli nie mieści się zapisujemy
0.
Obliczamy następną ewentualną resztę i bieżemy następny mniejszy o jeden wykładnik potęgi czyli
n-2 co odpowiada wartości potęgi 2
n-2 i próbujemy dopasować tą wartość do ostatniej reszty. Jeśli ta wartość nie mieści się w reszcie zapisujemy
0 i przechodzimy do następnego mniejszego o 1 wykładnika, a jeśli mieści się zapisujemy
1 obliczamy następną resztę odejmując wartość od poprzedniej reszty i otrzymując nową resztę.
Kontynuujemy tą procedurę aż do skutku to jest do uzyskania reszty=0 lub tak długo jak chcemy.
Jeśli wykładnik potęgi stanie się w międzyczasie równy 0, to zanim przejdziemy do wykładników ujemnych zapisujemy kropkę.
Uwaga: Jęśli reszta stanie się zerem zanim dojdziemy do n=0 pozostałe pozycje aż do n=0 uzupełniamy zerami (0)
Nasz konwerter w oknie powyżej stosuje dokładnie tą samą metodę, która jest universalną zarównodla liczb całkowitych jak też ułamkowych jednakże w przypadku potrzeby zamiany liczby dziesiętnej na dwójkową metoda ta jest niewygodna, zwłaszcza, że trzeba pamiętać lub obliczać kolejne wartości potęg liczby 2.
Spójrzmy zatem jeszcze raz na szereg reprezentujący liczbę dwójkową. Zaczniemy od części całkowitej.
Q = k=nΣk=0 ak2k = an2n + an-12n-1 + . . . + ak2k + . . . + a222 + a12 + a0
gdzie a
k jest równe 0 lub 1
Podzielmy szereg przez 2 i spójrzmy na wynik. W wyniku dzielenia otrzymujemy resztę, która jak widać jest równa a
0.
Po odjęciu reszty część całkowita wygląda następująco:
Q = k=nΣk=1 ak2k = an2n + an-12n-1 + . . . + ak2k + . . . + a222 + a12
Po dalszym podzieleniu pozostałej części szeregu przez 2 otrzymujemy:
Q = k=nΣk=2 ak2k = an2n + an-12n-1 + . . . + ak2k + . . . + a222 + a1
Tym razem resztą jest
a1
Powtarzając tą procedurę otrzymujemy kolejnowszystkie współczynniki a
0 , a
1 , a
2 , a
3 . . . aż do ostatniego gdzie już nie będzie czego dzielić.
Prześledźmy przykład zamiany liczby 325 na dwójkową.
324/2 = 162 |
r0=0 |
Zapiszmy wszystkie reszty jedną za drugą w kolejności odwrotnej. r0 to r8 co nam da wynik:
101000100
będący poszukiwanym zapisem dwójkowym liczby. |
162/2 = 81 | r1=0 |
81/2 = 40 | r2=1 |
40/2 = 20 | r3=0 |
20/2 = 10 | r4=0 |
10/2 =5 | r5=0 |
5/2 = 2 | r6=1 |
2/2 = 1 | r7=0 |
1/2 = 0 | r8=1 |
Jeśli liczba dziesiętna zawiera część ułamkową obie części traktujemy oddzielnie.
Część całkowitą tak jak wyżej, a część ułamkową inaczej.
Metodę łatwo odgadnąć przyglądając się szeregowi dla części ułamkowej. Aby uzyskać kolejne cyfry liczby dwójkowej mnożymy część ułamkową przez 2 i zapisujemy część całkowitą.
Następnie oddzielamy część ułamkową, którą ponownie mnożymy przez 2 i zapisujemy część całkowitą...
Procedurę kontynuujemy aż do uzyskania zerowej części ułamkowej lub tak długo jak chcemy aby uzyskać odpowiednią liczbę pozycji dwójkowych. Zapisujemy nasze części całkowite (zera lub jedynki) kolejno za kropką oddzielającą i oto nasz wynik.
Prześledźmy tą metodę zamieniając 0.625 na zapis dwójkowy.
0.625*2 = 1,250 |
I-1 = 1 |
Zapiszmy kolejne części całkowite
.101
i oto nasz rezultat |
0.250*2 = 0,500 | I-2 = 0 |
0.500*2 = 1.000 | I-3 = 1 |
Wykonaj kilka przykładów dla wprawy weryfikując wyniki za pomocą konwertora w oknie powyżej.
Przyjemnej zabawy !
Witold W.