Kalkulator kodu uzupełnień do dwóch (U2)
Czym jest kod uzupełnień do dwóch?
Kod uzupełnień do dwóch to standardowy sposób, w jaki komputery przechowują liczby całkowite ze znakiem — liczby, które mogą być dodatnie lub ujemne — używając ustalonej liczby bitów. Zamiast rezerwować osobny symbol dla znaku minus, liczby ujemne są kodowane tak, aby zwykłe dodawanie binarne po prostu działało, bez specjalnej obsługi znaku. Niemal każdy współczesny procesor reprezentuje liczby całkowite w ten sposób.
Ten kalkulator przyjmuje całkowitą liczbę dziesiętną oraz szerokość bitową (8, 16 lub 32 bity) i pokazuje jej wzorzec w kodzie uzupełnień do dwóch zarówno w postaci binarnej, jak i szesnastkowej.
Jak to działa?
Dla wybranej szerokości bitów każda wartość jest przechowywana jako wzorzec bitowy bez znaku:
- Jeśli liczba jest nieujemna, jej wzorzec to po prostu wartość binarna , uzupełniona wiodącymi zerami do bitów.
- Jeśli liczba jest ujemna, jej wzorzec to wartość binarna .
Ponieważ w drugim przypadku jest ujemne, jest wartością dodatnią mniejszą niż , więc zawsze mieści się w bitach. Najbardziej znaczący (skrajnie lewy) bit okazuje się być dla każdej liczby ujemnej i dla każdej nieujemnej — ten bit pełni rolę znaku.
Wzór
Wynik jest następnie zapisywany dokładnie cyframi binarnymi (lub cyframi szesnastkowymi).
Rozwiązane przykłady
Przykład 1: liczba dodatnia
Zakoduj na bitach. Ponieważ , wzorzec to po prostu w postaci binarnej, uzupełnione do ośmiu cyfr:
Przykład 2: minus jeden
Zakoduj na bitach. Ponieważ , oblicz :
Minus jeden to zawsze nieprzerwany ciąg jedynek, niezależnie od szerokości.
Przykład 3: minus pięć
Zakoduj na bitach. Oblicz :
Tabela referencyjna (8-bitowa)
| Dziesiętna | Binarna w kodzie U2 | Hex |
|---|---|---|
| 5 | 00000101 | 0x05 |
| 0 | 00000000 | 0x00 |
| -1 | 11111111 | 0xFF |
| -5 | 11111011 | 0xFB |
| 127 | 01111111 | 0x7F |
| -128 | 10000000 | 0x80 |
Uwagi
- -bitowa liczba całkowita ze znakiem obejmuje zakres od do ; bitów obejmuje od do ; bity obejmują mniej więcej miliarda. Wartości poza wybranym zakresem zawijają się modulo .
- Wiodący bit jest znakiem: oznacza liczbę nieujemną, a oznacza liczbę ujemną.
- Aby przekształcić zwykłą liczbę nieujemną na postać binarną bez bitu znaku, użyj konwertera dziesiętnego na binarny lub ogólnego konwertera systemów liczbowych dla innych podstaw.
Najczęściej zadawane pytania
Ile wynosi -1 w kodzie uzupełnień do dwóch?
W dowolnej szerokości to same jedynki: (0xFF) dla 8 bitów, (0xFFFF) dla 16 bitów i tak dalej.
Jak ręcznie uzyskać kod uzupełnień do dwóch liczby ujemnej?
Zapisz wielkość liczby w postaci binarnej, odwróć każdy bit, a następnie dodaj jeden. Dla na 8 bitach: to , odwrócenie daje , a dodanie jednego daje — ten sam wynik co .
Dlaczego szerokość bitowa ma znaczenie?
Szerokość ustala, ile bitów zajmuje wzorzec, a tym samym zakres liczb, które można przechować. Ta sama wartość dziesiętna daje dłuższy ciąg wiodących zer lub jedynek w miarę wzrostu szerokości.