Konwerter systemów liczbowych

Konwertuj między systemem binarnym, ósemkowym, dziesiętnym i szesnastkowym.

O tym narzędziu

Wpisz liczbę w systemie binarnym, ósemkowym, dziesiętnym lub szesnastkowym i zobacz ją we wszystkich pozostałych, razem z bitami pogrupowanymi w bajty. Obsługuje dowolnie duże liczby całkowite i rozpoznaje prefiksy 0x, 0b i 0o.

Jak z tego korzystać

  1. Wpisz liczbę w dowolnym z czterech pól: binarnym, ósemkowym, dziesiętnym lub szesnastkowym.
  2. Pozostałe pola aktualizują się natychmiast. Akceptowane są prefiksy takie jak 0x, 0b i 0o.
  3. Zajrzyj do panelu bitów, aby zobaczyć wartość podzieloną na bajty.

Pytania

Jak dużą liczbę obsługuje?
Dowolnie duże. Narzędzie używa JavaScript BigInt, więc nie ma limitu 32 ani 64 bitów ani zaokrągleń.
Dlaczego liczby szesnastkowe zaczynają się od 0x?
To konwencja z języka C, używana dziś przez większość języków, która pokazuje, że cyfry są szesnastkowe. Podobnie 0b oznacza liczbę binarną, a 0o ósemkową.
Gdzie wciąż używa się systemu ósemkowego?
Głównie przy uniksowych uprawnieniach plików, gdzie 755 oznacza rwxr-xr-x. Każda cyfra ósemkowa odpowiada dokładnie trzem bitom uprawnień.
Jak zamienić hex na tekst ASCII?
To narzędzie konwertuje liczby, nie ciągi znaków. W tekście zapisanym w hex każda para cyfr to jeden bajt, który sprawdzasz w tablicy ASCII: 48 65 6C 6C 6F to „Hello”. W wierszu poleceń echo 48656c6c6f | xxd -r -p zamienia ciąg hex z powrotem na tekst.
Czy można konwertować ułamki lub liczby z częścią dziesiętną?
Nie, tylko liczby całkowite. Ułamki i tak są w systemie binarnym kłopotliwe: dziesiętne 0.1 nie ma dokładnej postaci binarnej i powtarza się w nieskończoność, dlatego w większości języków programowania 0.1 + 0.2 nie daje dokładnie 0.3. Wartości zmiennoprzecinkowe są przechowywane w formacie IEEE 754, a nie jako zwykłe binarne liczby całkowite.
Jaka jest największa liczba mieszcząca się w 8, 16, 32 lub 64 bitach?
Bez znaku jest to 2ⁿ − 1: 255, 65 535, 4 294 967 295 i 18 446 744 073 709 551 615. Wartości ze znakiem sięgają mniej więcej połowy tego, np. 2 147 483 647 dla 32 bitów. Liczby w JavaScripcie są dokładne tylko do 9 007 199 254 740 991, dlatego to narzędzie używa BigInt, by zachować precyzję powyżej tej granicy.

Jak zamienić liczbę binarną na dziesiętną i z powrotem?

Każda cyfra liczby binarnej jest warta potęgę dwójki, zaczynając od 1 po prawej. Aby zamienić 1011 na liczbę dziesiętną, dodaj pozycje, na których stoi 1: 8 + 0 + 2 + 1 = 11. System szesnastkowy działa tak samo z potęgami 16, więc 0x2F to 2 × 16 + 15 = 47. System ósemkowy używa potęg ósemki. Jedna reguła obejmuje każdą podstawę: każda cyfra razy podstawa podniesiona do potęgi równej jej pozycji.

Aby przejść w drugą stronę, dziel wielokrotnie przez docelową podstawę i zapisuj reszty od ostatniej do pierwszej. Dzielenie 11 przez 2 raz za razem daje reszty 1, 1, 0 i 1, które czytane od końca dają 1011. W tym konwerterze systemów liczbowych wystarczy pisać w dowolnym polu, a pozostałe trzy się zaktualizują. W kodzie JavaScript ma parseInt(text, 2) i n.toString(16), a Python int(text, 2) i hex(n).

Dlaczego programiści używają systemu szesnastkowego?

Jedna cyfra szesnastkowa odpowiada dokładnie czterem bitom, więc dwie cyfry hex opisują jeden bajt. Dzięki temu hex to zwięzły i czytelny sposób zapisu danych binarnych: 11111111 to FF, a każda 32-bitowa wartość mieści się w ośmiu znakach. Spotkasz go w adresach pamięci, kodach kolorów, takich jak #FF8800, hashach, adresach MAC, punktach kodowych Unicode, np. U+1F680, i zrzutach bajtów wypisywanych przez narzędzia takie jak xxd i hexdump.

Panel bitów pokazuje ten związek bezpośrednio. Wartość jest uzupełniana do pełnych bajtów, a każda grupa ośmiu bitów jest pokazana z dwucyfrową wartością hex pod spodem. 48879 staje się 10111110 11101111, z etykietami BE i EF, dlatego czyta się ją jako 0xBEEF. Ułatwia to sprawdzanie flag, masek bitowych i granic bajtów. Kalkulator podsieci (CIDR) stosuje ten sam widok binarny do adresów IPv4 i masek sieci.

Jak zapisać liczbę ujemną binarnie: kod uzupełnień do dwóch

Komputery zwykle przechowują liczby całkowite ze znakiem w kodzie uzupełnień do dwóch. Aby zapisać −1 na 8 bitach, odwróć każdy bit liczby 1 i dodaj jeden: 00000001 staje się 11111110, a po dodaniu jedynki daje 11111111, czyli 0xFF. Najwyższy bit pełni rolę znaku, więc 8-bitowa wartość ze znakiem ma zakres od −128 do 127, a te same bity odczytane bez znaku dają od 0 do 255. Wzorzec bitów jest identyczny; zmienia się tylko interpretacja.

Ten konwerter działa na zwykłych liczbach całkowitych, a nie na rejestrach o stałej szerokości. Wpisz -5, a dostaniesz -101 binarnie i -5 w hex, ze znakiem minus z przodu zamiast wzorca w kodzie uzupełnień do dwóch. Aby dostać 8-bitowy wzorzec liczby ujemnej, najpierw dodaj 256: −5 + 256 = 251, czyli 0xFB. Dla 32 bitów dodaj 4294967296. Spacje i podkreślenia są ignorowane, więc 1111_1011 też zadziała jako dane wejściowe.

Tabela liczb dziesiętnych, szesnastkowych, binarnych i ósemkowych

Liczby, które sprawdzasz najczęściej, we wszystkich czterech systemach liczbowych.

DziesiętnieSzesnastkowoBinarnieÓsemkowo
00x000000o0
10x100010o1
20x200100o2
30x300110o3
40x401000o4
50x501010o5
60x601100o6
70x701110o7
80x810000o10
90x910010o11
100xA10100o12
110xB10110o13
120xC11000o14
130xD11010o15
140xE11100o16
150xF11110o17
160x100001 00000o20
320x200010 00000o40
640x400100 00000o100
1000x640110 01000o144
1270x7F0111 11110o177
1280x801000 00000o200
2550xFF1111 11110o377
2560x1000001 0000 00000o400
5120x2000010 0000 00000o1000
10000x3E80011 1110 10000o1750
10240x4000100 0000 00000o2000
40960x10000001 0000 0000 00000o10000
655350xFFFF1111 1111 1111 11110o177777

Coś nie działa albo wynik wygląda na błędny? Zgłoś problem z tym narzędziem