W jaki sposób 0 ma dwie wartości w uzupełnieniu?

12

Mówi się, że w uzupełnieniu 2 0 ma tylko jedną wartość, podczas gdy w uzupełnieniu 1 zarówno +0, jak i -0 mają osobne wartości. Czym oni są?

użytkownik136782
źródło
8
0 nie ma dwóch wartości. Ma wartość 0. Okres. To, co ma w uzupełnieniu 1, to dwie reprezentacje . Ale to naprawdę nie jest coś wyjątkowego. Na przykład liczba 10 ma nieskończenie wiele reprezentacji dziesiętnych: 10, +10, 010, +010, 0010, +0010,… i tak dalej.
Jörg W Mittag
Dokładnie. Te wartości są tylko równoważności zajęcia z reprezentacji, a co się nazywa „wartość 0” dzieje się klasa równoważności zawierająca zarówno 000...0i 111...1. Ale te dwie reprezentacje wciąż stanowią tylko jedną wartość.
lewo około

Odpowiedzi:

19

W uzupełnieniu do 1 odwracasz wszystkie bity.

Rozważ te 2 przykłady (przy założeniu 8 bitów):

  • , więc - 4 = 111110114=000001004=11111011

  • , więc - 0 = 11111111 .0=000000000=11111111

Masz więc 2 sposoby reprezentowania liczby 0

W uzupełnieniu 2 dodajesz 1 do reprezentacji uzupełnienia 1 liczby ujemnej

  • że w 1 uzupełnieniu było 11111011 staje się 1111110041111101111111100
  • że w 1 dopełnieniu było 11111111 staje się 00000000 tak samo jak 001111111100000000

Więc masz tylko jeden sposób na reprezentowanie 0 w tym przypadku

Jak widać z przykładów, różnica polega na tym, że:

  • w uzupełnieniu 1, z 8 bitami możesz po prostu wyrazić liczby od do 2 7 - 1 (od -127 do 127)27+1271
  • w uzupełnieniu 2 z 8 bitami możesz wyrazić liczby od do 2 7 - 1 (od -128 do 127), więc jeszcze jedna liczba27271
ABC
źródło
7
Warto wspomnieć, że uzupełnienie 2 ma więcej zalet oprócz jednej dodatkowej liczby w zakresie, nawet jeśli nie wnikniesz w szczegóły, jakie są.
KRyan
7
Warto również wspomnieć o jednej z wymienionych zalet w tej sekcji komentarza: Jedną z głównych zalet jest odejmowanie (/ dodawanie liczb ujemnych), które można wdrożyć tylko przez udawanie, że liczby są niepodpisane i ich dodawanie. Odejmowanie nie wymaga specjalnych przypadków = znacznie prostsze obwody i logika. Ta strona ma ładny opis na ten temat.
Jason C
3

00110

David Richerby
źródło
Jedne uzupełniają operacje dodawania lub odejmowania z przenoszeniem dookoła. Oczywiście to, co wyświetla się programiście, nie musi być podstawową reprezentacją.
ttw
1
@ttw Pytanie dotyczy dwóch reprezentacji zera, więc nie jestem pewien, skąd się biorą dodawanie, odejmowanie i programiści.
David Richerby,
3

Mówienie o dwóch różnych wartościach 0 w uzupełnieniu jest mylące. Uzupełnienie jednego (i uzupełnienie dwóch) to binarne reprezentacje liczb. Opisują sposób reprezentacji liczb w postaci binarnej oraz sposób wykonywania na nich operacji arytmetycznych. Liczba reprezentowana przez sekwencję bitów jest wartością.

000=00

00011

Martijn
źródło