Dodawanie liczb w systemie dwójkowym – cztery reguły, przeniesienie na następną pozycję i typowe błędy przy dłuższych liczbach.
Dodawanie binarne działa tak samo jak pisemne dodawanie w słupku, którego uczyliśmy się w podstawówce – tylko cyfry są dwie zamiast dziesięciu, a przeniesienie pojawia się dużo częściej.
Reguły są cztery. Zero plus zero daje zero. Zero plus jeden daje jeden. Jeden plus zero daje jeden. I ta jedyna nieoczywista: jeden plus jeden daje zero z przeniesieniem jedynki na następną pozycję w lewo.
Może się zdarzyć, że na jednej pozycji dodajemy trzy jedynki: dwie z liczb i jedną z przeniesienia. Wtedy wynikiem jest jeden, a przeniesienie znów wynosi jeden.
Dodajemy 1011 i 0110, licząc od prawej:
Wynik: 10001. Sprawdzenie dziesiętne: 11 + 6 = 17, a 10001 to 16 + 1 = 17.
funkcja dodaj_binarnie(a, b): wynik ← "" przeniesienie ← 0 i ← długość(a) - 1 dopóki i ≥ 0: suma ← a[i] + b[i] + przeniesienie wynik ← (suma mod 2) + wynik przeniesienie ← suma div 2 i ← i - 1 jeżeli przeniesienie = 1: wynik ← "1" + wynik zwróć wynik
Dodawanie binarne pojawia się zwykle jako krótkie obliczenie do wykonania ręcznie, czasem połączone z pytaniem o zakres liczb lub o przepełnienie.
Największe ryzyko to zgubienie ostatniego przeniesienia. Jeśli po najstarszej pozycji zostaje jedynka, wynik jest o jeden bit dłuższy niż składniki – i ten bit trzeba dopisać.
Mówimy o przepełnieniu. Przy stałej liczbie bitów najstarsze przeniesienie przepada i wynik jest błędny – dlatego procesor sygnalizuje taki przypadek osobną flagą.
Najprościej dodać liczby jeszcze raz, ale w odwrotnej kolejności składników. Dodawanie jest przemienne, więc drugi przebieg musi dać ten sam wynik.
Tak, z pożyczką zamiast przeniesienia. W praktyce komputery odejmowania nie wykonują wprost – zamieniają je na dodawanie liczby przeciwnej zapisanej w kodzie U2.
Zagadnienia z tego samego obszaru matury – warto je powtórzyć razem: