Napisz program implementujący algorytm pisemnego dzielenia liczb binarnych.



Odpowiedź :

Odpowiedź:

Do wykonywania dodawania niezbędna jest znajomość tabliczki dodawania, czyli wyników sumowania każdej cyfry z każdą inną. W systemie binarnym mamy tylko dwie cyfry 0 i 1, zatem tabliczka dodawania jest niezwykle prosta i składa się tylko z 4 pozycji:

0 + 0 =  0

0 + 1 =  1

1 + 0 =  1

1 + 1 =  10

Przykład:

Zsumować liczby binarne 1111001(2) oraz 10010(2).

Sumowane liczby zapisujemy jedna pod drugą tak, aby w kolejnych kolumnach znalazły się cyfry stojące na pozycjach o tych samych wagach (identycznie postępujemy w systemie dziesiętnym zapisując liczby w słupkach przed sumowaniem):

 1111001

+  10010

Sumowanie rozpoczynamy od ostatniej kolumny. Sumujemy cyfry w kolumnie zgodnie z podaną tabelką zapisując wynik pod kreską:

 1111001

+  10010

 1011

Jeśli wynik sumowania jest dwucyfrowy (1 + 1 = 10), to pod kreską zapisujemy tylko ostatnią cyfrę 0, a 1 przechodzi do następnej kolumny - dodamy ją do wyniku sumowania cyfr w następnej kolumnie. Jest to tzw. przeniesienie (ang. carry). Przeniesienie zaznaczyliśmy na czerwono:

   1          

 1 1 1 1 0 0 1

+      1 0 0 1 0

     0 1 0 1 1

Jeśli w krótszej liczbie zabrakło cyfr, to dopisujemy zera. Pamiętajmy o przeniesieniach.

1 1 1          

 1 1 1 1 0 0 1

+  0 0 1 0 0 1 0

 0 0 0 1 0 1 1

Dodaliśmy wszystkie cyfry, ale przeniesienie wciąż wynosi 1. Zatem dopisujemy je do otrzymanego wyniku (możemy potraktować pustą kolumnę tak, jakby zawierała cyfry 0 i do wyniku sumowania dodać przeniesienie).

 1 1 1          

 0 1 1 1 1 0 0 1

+  0 0 0 1 0 0 1 0

 1 0 0 0 1 0 1 1

1111001(2) + 10010(2) = 10001011(2) (121 + 18 = 139)

Oto kilka dalszych przykładów:

 1 1 1 1 1 1 1  

 0 1 1 1 1 1 1 1

+  0 0 0 0 0 0 0 1

 1 0 0 0 0 0 0 0

 1 1 1 1 1 1 1  

 0 1 1 1 1 1 1 1

+  0 0 0 0 0 1 0 1

 1 0 0 0 0 1 0 0

   1 1 1 1      

 1 0 1 1 1 1 1 0

+  0 0 0 0 1 1 0 0

 1 1 0 0 1 0 1 0

Wyjaśnienie: