Menu

Konwerter systemów liczbowych

Zamieniaj liczby między systemem dwójkowym, ósemkowym, dziesiętnym i szesnastkowym.

Autor: Nethanel Bar, Co-founder & CEO

Ostatnia aktualizacja

Chcesz naprawdę nauczyć się programować?

Coddy uczy cię przez pisanie prawdziwego kodu w przeglądarce: interaktywne lekcje, natychmiastowa informacja zwrotna i pomoc AI, gdy utkniesz.

Czym jest kalkulator systemów liczbowych?

Kalkulator systemów liczbowych bierze liczbę zapisaną w jednym systemie (binarnym, ósemkowym, dziesiętnym lub szesnastkowym) i przepisuje ją na dowolny z pozostałych. Programiści sięgają po niego przy czytaniu masek bitowych, debugowaniu kodów kolorów, dekodowaniu flag w pakietach protokołów, pracy z rejestrami sprzętowymi i zamianie hex na dziesiętny we wszystkim, od CSS przez asembler po kryptografię.

Sama liczba nie zmienia się między systemami, zmienia się tylko jej *zapis*. 255 dziesiętnie to 0xFF szesnastkowo, 0b11111111 binarnie i 0o377 ósemkowo. To cztery różne sposoby zapisania tej samej wartości.

Nowoczesne narzędzia powinny obsługiwać duże liczby bez utraty precyzji. Zwykły parseInt w JavaScripcie po cichu zaokrągla wszystko powyżej 2⁵³, co powoduje subtelne błędy przy 64-bitowych wartościach rejestrów, identyfikatorach i znacznikach czasu. Solidny konwerter korzysta pod spodem z BigInt, więc nawet 256-bitowa wartość hex przechodzi konwersję w obie strony bez strat.

Czego nauczysz się przy zamianie systemów liczbowych

  • System binarny używa 2 cyfr (0, 1), ósemkowy 8, dziesiętny 10, a szesnastkowy 16 (0-9, a-f).
  • Każda cyfra binarna to jeden *bit*. 4 bity = 1 cyfra hex. 8 bitów = 1 bajt = 2 cyfry hex.
  • Hex to po prostu zwięzły sposób czytania liczb binarnych. 0xCAFE to binarnie 1100 1010 1111 1110, a w hex łatwiej to ogarnąć wzrokiem.
  • Liczby powyżej 2⁵³ tracą precyzję w standardowym JavaScripcie. Przy dużych liczbach całkowitych używaj BigInt (123n).

Jak zamieniać systemy liczbowe krok po kroku

  1. Wybierz system wejściowy

    Wybierz binarny, ósemkowy, dziesiętny lub szesnastkowy, zależnie od tego, jaką liczbę masz.

  2. Wpisz wartość

    Hex przyjmuje zarówno ff, jak i 0xff. Binarny przyjmuje zarówno 1010, jak i 0b1010. Konwerter automatycznie usuwa prefiks.

  3. Odczytaj wszystkie systemy naraz

    Wszystkie cztery zapisy tej samej liczby pojawiają się od razu. Kliknij dowolny, żeby go skopiować.

  4. Włącz grupowanie cyfr dla czytelności

    Grupuj liczby binarne po 4 bity (1100 1010 1111 1110), a hex po 2 znaki (CA FE). Przydaje się do analizy pól bitowych i zrzutów pamięci.

Ściąga z systemów liczbowych

Popularne wartości we wszystkich czterech systemach. BigInt i gramatyka literałów liczbowych w JavaScripcie opisują składnię używaną poniżej.

DziesiętnyBinarnyÓsemkowyHex
0000
1111
81000108
10101012A
16100002010
321000004020
64100000010040
100110010014464
1281000000020080
25511111111377FF
256100000000400100
1024100000000002000400
655351111111111111111177777FFFF

Przykłady zamiany systemów liczbowych do wypróbowania

Kody kolorów RGB

Hex
color: #ff8800;
Dziesiętnie
color: rgb(255, 136, 0);

Każda para cyfr hex to jeden bajt (0–255) dla jednego kanału. ff = 255, 88 = 136, 00 = 0.

Odczytaj maskę bitową uprawnień

Dziesiętnie

5

Binarnie

0b101

Odczyt bitów

Bit 0 (odczyt) jest ustawiony, bit 2 (wykonanie) jest ustawiony, bit 1 (zapis) nie. Uprawnienia to więc odczyt + wykonanie.

Tryby plików w Uniksie (chmod), flagi funkcji i pakiety protokołów kodują wiele wartości logicznych jako bity w jednej liczbie całkowitej. Widok binarny sprawia, że to widać.

Konwersja z precyzją BigInt

Hex (bardzo duża liczba)

0xFFFFFFFFFFFFFFFF

Dziesiętnie

18446744073709551615

To maksymalna 64-bitowa liczba całkowita bez znaku. Zwykły parseInt w JavaScripcie straciłby precyzję, a BigInt radzi sobie z nią bez problemu.

Częste błędy przy zamianie systemów liczbowych

  • Mylenie *liczby* z *literałem*. 0x10 i 10 wyglądają podobnie, ale to 16 i 10, dlatego w kodzie zawsze dodawaj prefiks systemu.
  • Czytanie hex od lewej do prawej i zapominanie o kolejności bajtów (endianness) w surowych zrzutach pamięci.
  • Używanie parseInt(big, 16) w JavaScripcie dla wartości większych niż 2⁵³. Zamiast tego użyj BigInt('0x' + hex).
  • Błędne dopełnianie bajtów. 0xF zapisane jako bajt to 0x0F, a nie 0xF0: zera wiodące mają znaczenie w polach o stałej szerokości.
  • Mieszanie interpretacji ze znakiem i bez znaku. Hex 0xFFFF_FFFF to 4294967295 bez znaku, ale -1 ze znakiem (kod uzupełnień do dwóch).

Kalkulator systemów liczbowych: FAQ

Jak zamienić liczbę binarną na dziesiętną?
Pomnóż każdą cyfrę binarną przez odpowiednią potęgę 2, zaczynając od prawej. Dla 1010: 1·8 + 0·4 + 1·2 + 0·1 = 10. Możesz też wkleić ją do kalkulatora systemów liczbowych i od razu dostać wynik.
Jak zamienić liczbę dziesiętną na szesnastkową?
Dziel liczbę dziesiętną przez 16, zapisując reszty (0-15, gdzie 10-15 zapisuje się jako A-F). Odczytaj reszty od dołu do góry. 255 ÷ 16 = 15 reszta 15 → FF.
Do czego służy system szesnastkowy?
Hex używa się wszędzie tam, gdzie przydaje się zwięzła i czytelna postać liczb binarnych: w kodach kolorów (#ff8800), adresach pamięci, zrzutach plików, adresach MAC, hashach i większości systemów niskopoziomowych.
Czym różni się system ósemkowy od szesnastkowego?
System ósemkowy ma podstawę 8 (cyfry 0-7), a szesnastkowy podstawę 16 (cyfry 0-9, A-F). System ósemkowy jest dziś rzadki, ale nadal pojawia się w uprawnieniach plików w Uniksie (0755) i niektórych literałach liczbowych w językach z rodziny C.
Dlaczego liczby binarne rosną tak szybko?
Każda nowa cyfra podwaja liczbę możliwych wartości. 8 bitów daje 256 wartości, 16 bitów 65 536, a 32 bity ponad 4 miliardy. Dlatego maski bitowe mieszczą dużo znaczenia w małej liczbie.

Dowiedz się więcej

Inne narzędzia dla programistów

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ