UTILS.
100% w przeglądarce
🔢

Konwerter kodu uzupełnień do dwóch

Przekonwertuj liczby całkowite ze znakiem na/z kodu uzupełnień do dwóch w postaci binarnej i hex przy szerokości 4, 8, 16, 32 lub 64 bitów, z uzupełnieniem do jednego i interpretacją bez znaku.

Wpisz liczbę lub wzorzec bitowy powyżej.

O tym narzędziu

Konwerter kodu uzupełnień do dwóch koduje liczbę całkowitą ze znakiem na jej reprezentację w kodzie uzupełnień do dwóch w postaci binarnej i szesnastkowej przy wybranej szerokości bitów (4, 8, 16, 32 lub 64 bity) oraz dekoduje wzorzec binarny lub hex z powrotem na wartość ze znakiem, którą reprezentuje. Używa BigInt w całości, więc wartości 64-bitowe są obsługiwane dokładnie bez utraty precyzji.

Dla szerokości N bitów zakres ze znakiem to −2^(N−1) do 2^(N−1)−1. Aby zakodować liczbę dziesiętną d: jeśli d jest nieujemne, wzorzec to po prostu d; jeśli d jest ujemne, wzorzec to 2^N + d (równoważnie: odwróć wszystkie bity |d| i dodaj 1). Narzędzie wypisuje N-bitowy binarny uzupełniony zerami, hex o N/4 cyfrach, uzupełnienie do jednego (bitowe NOT) i interpretację tych samych bitów bez znaku oraz zgłasza błąd przepełnienia, gdy wartość nie mieści się w wybranej szerokości.

Aby zdekodować, wklej wzorzec binarny lub hex, a narzędzie odczyta jego najstarszy bit: jeśli najbardziej znaczący bit jest ustawiony, wartość to wzorzec − 2^N (ujemna), w przeciwnym razie jest to sam wzorzec. Zawsze pokazuje zarówno odczyt ze znakiem, jak i bez znaku obok siebie, co jest dokładnie tą niejednoznacznością, którą kod uzupełnień do dwóch rozstrzyga na poziomie sprzętowym. Całe obliczenia są lokalne dla Twojej przeglądarki.

Najczęściej zadawane pytania

Jaki jest zakres dla każdej szerokości bitów?
Szerokość N bitów reprezentuje wartości ze znakiem od −2^(N−1) do 2^(N−1)−1. Więc 8-bit obejmuje −128 do 127, 16-bit −32768 do 32767, a 32-bit około ±2,1 miliarda. Wartości poza zakresem wyzwalają ostrzeżenie o przepełnieniu.
Jak kodowana jest liczba ujemna?
Weź wartość bezwzględną, odwróć każdy bit (uzupełnienie do jednego) i dodaj 1. Równoważnie wzorzec równa się 2^N plus liczba ujemna. Na przykład −1 w 8 bitach to 11111111, a −42 to 11010110.
Po co pokazywać także wartość bez znaku?
Ten sam wzorzec bitowy ma dwa odczyty: ze znakiem (uzupełnienie do dwóch) i bez znaku. Pokazanie obu wyjaśnia, że na przykład 8-bitowy wzorzec 11111111 to −1 ze znakiem, ale 255 bez znaku — interpretacja zależy od tego, jak sprzęt go traktuje.
Czy potrafi obsłużyć wartości 64-bitowe dokładnie?
Tak. Konwerter używa arytmetyki BigInt o dowolnej precyzji, więc wzorce 64-bitowe i ich wartości ze znakiem są obliczane dokładnie, bez zaokrągleń, które zwykłe liczby JavaScript wprowadziłyby powyżej 2^53.

Więcej narzędzi