Wynikiem sumowania liczb binarnych 1001101 i 11001 jest
A. 1000111
B. 1100110
C. 1100111
D. 1000110
Pytanie z egzaminu CKE, czerwiec 2017 (arkusz E.12-X-17.06).
Wynik 1100110 jest poprawny, bo w dodawaniu binarnym trzeba wyrównać liczby do prawej strony i przenosić jedynki tak samo, jak w systemie dziesiętnym przenosi się dziesiątki. Liczbę 11001 można zapisać jako 0011001, żeby miała tyle samo bitów co 1001101. Dodajemy więc: 1001101₂ + 0011001₂ = 1100110₂. Od prawej strony: 1 + 1 daje 0 i przeniesienie 1, potem 0 + 0 + przeniesienie daje 1, dalej pojawiają się kolejne przeniesienia przy sumie 1 + 1. Kontrolnie można sprawdzić to dziesiętnie: 1001101₂ = 77, a 11001₂ = 25, więc 77 + 25 = 102, a 102 w systemie binarnym to właśnie 1100110₂. Moim zdaniem takie sprawdzenie w dwóch systemach jest bardzo dobrą praktyką, szczególnie na początku nauki. W praktyce dodawanie binarne jest podstawą działania procesora, rejestrów, liczników, adresowania pamięci i operacji na maskach bitowych. W technice cyfrowej ważne jest też stosowanie stałej szerokości słowa, np. 8 bitów, wtedy wynik można zapisać jako 01100110. To podejście jest zgodne z typową notacją pozycyjną używaną w dokumentacji technicznej i w standardach zapisu danych binarnych.
W tym zadaniu najłatwiej pomylić się nie na samej wartości liczb, tylko na przeniesieniach między kolumnami. System binarny ma tylko cyfry 0 i 1, więc gdy w jednej kolumnie pojawia się suma 1 + 1, nie zapisuje się 2, tylko zapisuje się 0 i przenosi 1 do następnej kolumny po lewej. Gdy dojdzie jeszcze przeniesienie, sytuacja 1 + 1 + 1 daje 1 i przeniesienie 1. To jest dokładnie ten mechanizm, który często psuje wynik, jeżeli ktoś liczy zbyt szybko albo traktuje dodawanie binarne jak zwykłe sklejanie bitów. Wariant 1100111 sugeruje, że w końcowej części działania została zostawiona jedynka tam, gdzie powinno wyjść 0 po dodaniu 1 + 1. To typowy błąd: zapamiętano przeniesienie, ale nie zmieniono bitu wyniku. Wyniki 1000110 i 1000111 są jeszcze bardziej podejrzane, bo mają za małą wartość liczbową. Skoro 1001101₂ to 77, a 11001₂ to 25, suma musi być większa niż 77 i wynosić 102. Liczby zaczynające się od 100... w tym układzie dają wartości około 70, więc od razu widać, że coś nie gra. Z mojego doświadczenia najlepsza metoda to dopisać zera z lewej strony krótszej liczby, czyli 11001 zapisać jako 0011001, a potem liczyć bit po bicie od prawej. Taki zapis jest też bardziej czytelny w elektronice cyfrowej, programowaniu niskopoziomowym i przy analizie rejestrów procesora. Dobra praktyka: po dodaniu binarnym warto zrobić szybkie sprawdzenie dziesiętne albo odwrotną konwersję, bo wtedy łatwo złapać właśnie takie małe, ale kosztowne błędy.