Powrót do listy

Operacje arytmetyczne na liczbach binarnych: Dodawanie, odejmowanie i kodowanie ujemne

Procesory i układy cyfrowe nie potrafią liczyć w systemie dziesiętnym tak jak ludzie – wszystkie obliczenia matematyczne, począwszy od prostych adresów pamięci, a skończywszy na skomplikowanej grafice 3D i sztucznej inteligencji, są wykonywane w systemie binarnym. W ramach przedmiotu UTK (Urządzenia Techniki Komputerowej) przyszły technik musi rozumieć mechanizmy dodawania, odejmowania oraz sposoby reprezentacji liczb ze znakiem wewnątrz procesora.

1. Dodawanie liczb binarnych

Dodawanie w systemie dwójkowym opiera się na prostych regułach sumowania bitów, analogicznie do systemu dziesiętnego, z tą różnicą, że przekroczenie wartości 1 powoduje przeniesienie jedynki ($1 + 1 = 10$, czyli 0 z przeniesieniem 1 na następną pozycję):

2. Odejmowanie liczb binarnych

Odejmowanie można realizować tradycyjną metodą "pożyczania" jedynki z starszej pozycji lub – co jest standardem we współczesnych procesorach – poprzez zamianę odejmowania na dodawanie z użyciem ujemnych kodów liczbowych:

3. Reprezentacja liczb ujemnych (Kod Uzupełnień do Dwóch – U2)

W elektronice cyfrowej konieczne jest przechowywanie zarówno liczb dodatnich, jak i ujemnych. Najpopularniejszym standardem jest kod U2 (Two's Complement):

Strategia technika

Podczas analizy działania procesora lub pisania niskopoziomowego kodu (np. w mikrokontrolerach), zawsze pamiętaj o szerokości bitowej rejestru (np. 8-bit, 16-bit, 32-bit). Przekroczenie zakresu liczbowego (tzw. overflow / przepełnienie bufora), gdy wynik dodawania dwóch dużych liczb nie mieści się w wyznaczenej liczbie bitów, prowadzi do błędów logicznych, które są jedną z najczęstszych przyczyn awarii oprogramowania i podatności bezpieczeństwa.