Przejdź do treści
100% lokalnie

Konwerter uzupełnienia do dwóch

Konwertuj liczbę całkowitą na jej binarną reprezentację uzupełnienia do dwóch o wybranej szerokości bitu, lub zdekoduj bity z powrotem na liczbę.

Wejście
Wynik

Konwerter uzupełnienia do dwóch

Komputery przechowują liczby ujemne przy użyciu uzupełnienia do dwóch, a nie zwykłego znaku minus — ten sam wzór bitów oznacza inną wartość w zależności od tego, czy odczytuje się go jako liczbę ze znakiem, czy bez znaku. To narzędzie konwertuje w obu kierunkach: wpisz jedną liczbę całkowitą na wiersz, a narzędzie wygeneruje odpowiadający wzór bitów uzupełnienia do dwóch w wybranej szerokości, lub przełącz kierunek i wklej wzory bitów, aby uzyskać wartość dziesiętną, którą każdy z nich reprezentuje.

Wybierz szerokość bitu 8, 16, 32 lub 64 — rozmiary, które rzeczywiście używają procesory i języki programowania dla bajtu, krótkiej liczby, liczby całkowitej i długiej liczby — i format wyjściowy binarny lub szesnastkowy. Opcja "ze znakiem" określa, jak wartość jest interpretowana: gdy jest włączona, wzór bitów jest czytany jako uzupełnienie do dwóch (najstarszy bit oznacza liczbę ujemną), a liczba musi mieścić się w zakresie ze znakiem dla tej szerokości; gdy jest wyłączona, oba kierunki interpretują te same bity jako zwykłą liczbę bez znaku. Przełączenie kierunku zamienia kodowanie na dekodowanie bez utraty danych wejściowych, więc sprawdzenie konwersji dwukierunkowej jest jednym kliknięciem.

Przepełnienie to miejsce, gdzie uzupełnienie do dwóch staje się mylące, więc to narzędzie czyni je widocznym zamiast ukrywania: liczba spoza wybranego zakresu szerokości wciąż zawinęła się w ten sposób, w jaki zapamiętuje rzeczywisty sprzęt — to zawinięcie jest prawidłowym wzorem uzupełnienia do dwóch, a nie błędem — ale wiersze, których dotyczy, są również oznaczone i liczone w podsumowaniu, aby niezamierzone przepełnienie w partii liczb nie umknęło bez uwagi. Wyłącz tę opcję, jeśli celowo badaszo zachowanie zawinięcia i nie chcesz, aby było wskazywane.

Wklej całą kolumnę liczb lub wzorów bitów na raz; każdy wiersz jest konwertowany niezależnie i puste wiersze są zachowywane, aby wynik pozostał wyrównany z wejściem. Wszystko działa lokalnie w przeglądarce — nic, co wkleisz, w tym własnościowych stałych lub wartości firmware, nigdy nie jest wysyłane nigdzie.

Częste pytania

Czym jest uzupełnienie do dwóch, w jednym zdaniu?
To standardowy sposób, w jaki komputery reprezentują ujemne liczby całkowite w systemie binarnym: te same bity, które reprezentują dużą liczbę dodatnią odczytaną jako liczbę bez znaku, reprezentują liczbę ujemną, gdy najstarszy bit jest odczytywany jako znak, a te dwie interpretacje różnią się dokładnie o 2^szerokość.
Dlaczego wartość jest oznaczana jako "poza zakresem" zamiast po prostu błędu?
Zawinięcie to prawidłowe zachowanie uzupełnienia do dwóch dla wartości spoza zakresu, a nie niepowodzenie, więc narzędzie wciąż generuje zawinięte bity. Oznacza to wiersze, których dotyczy problem, aby niezamierzone przepełnienie na liście liczb było łatwe do zauważenia; wyłącz opcję "Oznacz wartości poza zakresem", jeśli nie chcesz tego powiadomienia.
Co zmienia opcja "ze znakiem"?
Gdy opcja jest włączona, dekodowanie bierze najstarszy bit jako znak (standardowe uzupełnienie do dwóch) i kodowanie wymaga, aby liczba mieściła się w zakresie ze znakiem, takim jak -128..127 przy 8 bitach. Gdy jest wyłączona, te same bity są odczytywane jako zwykła liczba bez znaku od 0 do 2^szerokość - 1.
Czy mogę konwertować całą listę liczb na raz?
Tak. Wklej jedną liczbę (lub jeden wzór bitów podczas dekodowania) na wiersz, a każdy wiersz będzie konwertowany niezależnie, w tej samej kolejności, z zachowanymi pustymi wierszami.
Czy moje dane są przesyłane gdziekolwiek?
Nie. Konwersja odbywa się w całości w przeglądarce — nic, co wpiszesz lub wkleisz, nigdy nie jest wysyłane na serwer.