Reprezentacje liczb znakowych
Reprezentacje liczb podpisanych są używane do rozwiązania problemu reprezentowania ujemnych liczb całkowitych w systemie binarnym. Problem z próbą przechowywania ujemny znak (-) liczby binarnej jest to, że nie ma żadnych stanów w lewo do wykorzystania, z którym do reprezentowania ujemnego przypisania. Nie jest możliwe, aby po prostu użyć "off" dla minus i "on" dla plus, ponieważ komputer nie miałby sposobu, aby wiedzieć, czy jest to cyfra lub znak.
Aby przezwyciężyć ten problem, projektanci komputerów wymyślili dwie metody przechowywania ujemnych liczb binarnych: znak i wielkość oraz dopełnienie dwójkowe. Dają one alternatywne reprezentacje dla liczb podpisanych.
Znak i magnitudo
Sign and Magnitude działa poprzez zmianę najbardziej znaczącego bitu (MSB - pierwsza cyfra) na 1, jeśli liczba jest ujemna, i zmniejszenie liczby o jeden, na przykład:
0000 0010 (2)
stanie się...
1000 0010 (-2)
Ta metoda przechowywania ujemnych liczb binarnych nie działa, ponieważ:
- Arytmetyka binarna nie będzie działać.
- Musimy najpierw wiedzieć, jakiego mechanizmu przechowywania danych używa kompilator danego języka.
1's complement
Komplementarność 1's działa poprzez zamianę 1s na 0s i 0s na 1s, na przykład:
0000 0010 (2)
stanie się...
1111 1101 (-2)
Podobnie jak w metodzie znak-i-magnitudo, jest to łatwo zdefiniowane jako liczba ujemna, ponieważ jej najbardziej znaczący bit jest 1.
2's complement
Dopełnienie 2 jest trudniejszym sposobem przechowywania negatywów. Składa się on z trzech kroków:
- Znajdź dodatnią liczbę binarną (np. 8base 10 = 0000 1000base 2).
- Zamień 1s na 0s, a 0s na 1s (np. 0000 1000base 2 staje się 1111 0111base 2).
Jest to znane jako "odwracanie bitów", lub zastosowanie logicznego NOT do oryginalnej reprezentacji bazy 2.
- Dodać 1 (np. 1111 0111baza 2 + 1baza 2 = 1111 1000baza 2).
Ta metoda jest lubiana, ponieważ:
- To jest jak znak i wielkość; liczba ujemna zaczyna się od 1, a liczba dodatnia od 0.
- Arytmetyka binarna będzie działać.
- Istnieje tylko jedna wartość dla 0 (0000 0000base 2).