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*108 + 3*107 + 6*106 + 0*105 + 2*104 + 4*103 +5*102 + 6*10 + 9
oraz odpowiednio:
100110001 = 1*28 + 0*27 + 0*26 + 1*25 + 1*24 + 0*23 + 0*22 + 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 2n od naszej liczby. Otrzymujemy resztę, którą traktujemy jak następuje.

Sprawdzamy czy wartość potęgi 2n-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 2n-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 ak 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 a0.

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   a0 , a1 , a2 , a3 . . . 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.