Konwersja

Kalkulator kodu uzupełnień do dwóch (U2)

Ustawienia
Zresetuj
Udostępnij wynik
Zapisz
Osadź
Zgłoś błąd

Udostępnij kalkulator

Dodaj nasz darmowy kalkulator do swojej strony internetowej

Źródło

Proszę wprowadzić ważny URL. Obsługiwane są tylko adresy HTTPS.

Styl

Kolor z fokusem obręczy wprowadzania, kolor zaznaczonej przełączki, kolor elementu wyboru podczas najechania itp.

Zaawansowane

Proszę zaakceptować Warunki Użytkowania.

Prévisualisation

Zapisz kalkulator

Ustawienia kalkulatora

Proszę podać wartość w dozwolonym zakresie.

Proszę podać wartość w dozwolonym zakresie.

Proszę podać wartość w dozwolonym zakresie.

Proszę podać wartość w dozwolonym zakresie.

Udostępnij kalkulator

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 ww bitów każda wartość jest przechowywana jako wzorzec bitowy bez znaku:

  • Jeśli liczba nn jest nieujemna, jej wzorzec to po prostu wartość binarna nn, uzupełniona wiodącymi zerami do ww bitów.
  • Jeśli liczba nn jest ujemna, jej wzorzec to wartość binarna 2w+n2^w + n.

Ponieważ w drugim przypadku nn jest ujemne, 2w+n2^w + n jest wartością dodatnią mniejszą niż 2w2^w, więc zawsze mieści się w ww bitach. Najbardziej znaczący (skrajnie lewy) bit okazuje się być 11 dla każdej liczby ujemnej i 00 dla każdej nieujemnej — ten bit pełni rolę znaku.

Wzór

pattern(n)={nif n02w+nif n<0\text{pattern}(n) = \begin{cases} n & \text{if } n \ge 0 \\ 2^{w} + n & \text{if } n < 0 \end{cases}

Wynik jest następnie zapisywany dokładnie ww cyframi binarnymi (lub w/4w/4 cyframi szesnastkowymi).

Rozwiązane przykłady

Przykład 1: liczba dodatnia

Zakoduj n=5n = 5 na 88 bitach. Ponieważ 505 \ge 0, wzorzec to po prostu 55 w postaci binarnej, uzupełnione do ośmiu cyfr:

5000001012=0x055 \rightarrow 00000101_2 = \text{0x05}

Przykład 2: minus jeden

Zakoduj n=1n = -1 na 88 bitach. Ponieważ 1<0-1 < 0, oblicz 28+(1)=2561=2552^8 + (-1) = 256 - 1 = 255:

255111111112=0xFF255 \rightarrow 11111111_2 = \text{0xFF}

Minus jeden to zawsze nieprzerwany ciąg jedynek, niezależnie od szerokości.

Przykład 3: minus pięć

Zakoduj n=5n = -5 na 88 bitach. Oblicz 28+(5)=2565=2512^8 + (-5) = 256 - 5 = 251:

251111110112=0xFB251 \rightarrow 11111011_2 = \text{0xFB}

Tabela referencyjna (8-bitowa)

DziesiętnaBinarna w kodzie U2Hex
5000001010x05
0000000000x00
-1111111110xFF
-5111110110xFB
127011111110x7F
-128100000000x80

Uwagi

  • 88-bitowa liczba całkowita ze znakiem obejmuje zakres od 128-128 do 127127; 1616 bitów obejmuje od 32,768-32{,}768 do 32,76732{,}767; 3232 bity obejmują mniej więcej ±2.1\pm 2.1 miliarda. Wartości poza wybranym zakresem zawijają się modulo 2w2^w.
  • Wiodący bit jest znakiem: 00 oznacza liczbę nieujemną, a 11 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: 11111111211111111_2 (0xFF) dla 8 bitów, 111111111111111121111111111111111_2 (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 5-5 na 8 bitach: 55 to 0000010100000101, odwrócenie daje 1111101011111010, a dodanie jednego daje 1111101111111011 — ten sam wynik co 2565=251256 - 5 = 251.

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.

Zgłoś błąd

To pole jest wymagane.