§

Options

§

Binarny (podstawa 2)

§

Ósemkowy (podstawa 8)

§

Dziesiętny (podstawa 10)

§

Szesnastkowy (podstawa 16)

§

Własna podstawa

Na Politechnice Warszawskiej Wydziale Elektroniki i Technik Informacyjnych studenci analizują formaty IEEE 754 już na pierwszym roku — rozkład 32-bitowej mantisy na znak, wykładnik i część ułamkową to klasyczne ćwiczenie na laboratorium z architektury komputerów. Na PWr we Wrocławiu inżynierowie firmware czytają zrzuty hex z sond JTAG, szukając adresów funkcji w pamięci mikrokontrolera. W obu środowiskach konwersja między reprezentacjami liczbowymi jest codzienną czynnością — ten kalkulator obsługuje mechanikę, żebyś mógł skupić się na interpretacji, nie na arytmetyce.

Jak działa konwersja systemów liczbowych

Każdy pozycyjny system liczbowy reprezentuje wartość jako sumę cyfr pomnożonych przez potęgi podstawy. Zmiana podstawy oznacza przepisanie tej samej wartości względem innego ciągu potęg.

  1. Walidacja alfabetu wejściowego. Każda podstawa akceptuje określony zestaw cyfr. System binarny przyjmuje 0 i 1; ósemkowy — 0–7; dziesiętny — 0–9; szesnastkowy — 0–9 i A–F. Znak spoza wybranego alfabetu wywołuje komunikat błędu przed wykonaniem jakiejkolwiek konwersji.
  2. Parsowanie wartości. Dla wartości mieszczących się w zakresie JavaScript Number (do 2^53–1) narzędzie wywołuje parseInt(text, base). Powyżej tej granicy przełącza się na BigInt, zachowując dokładność dla dowolnie dużych liczb całkowitych.
  3. Przeliczenie na każdą docelową podstawę. Sparsowana wartość jest konwertowana do każdej podstawy wyjściowej za pomocą Number.prototype.toString(base) lub BigInt.prototype.toString(base). Cztery standardowe panele (binarny, ósemkowy, dziesiętny, hex) oraz panel własnej podstawy aktualizują się jednocześnie.
  4. Stosowanie formatowania. Przełącznik przedrostka dodaje 0b, 0o lub 0x przed wynikiem binarnym, ósemkowym i szesnastkowym. Grupowanie cyfr wstawia podkreślnik co cztery cyfry binarne i co dwie cyfry hex. Przełącznik wielkości liter hex wybiera wielkie lub małe litery dla A–F.
  5. Synchronizacja paneli na żywo. Edycja dowolnego panelu wyzwala ponowną konwersję z 100 ms debouncem, która aktualizuje pozostałe panele. Panel, w którym piszesz, jest traktowany jako źródło prawdy przy każdym naciśnięciu klawisza.

Dlaczego warto używać konwertera systemów liczbowych

  • Odczytywanie zrzutów pamięci. Debuggery, disassemblery i narzędzia do przeglądania zrzutów rdzenia wyświetlają adresy i zawartość rejestrów w formacie hex. Przeliczenie ich na dziesiętny umożliwia porównanie z licznikami, rozmiarami i przesunięciami podawanymi w innych częściach tego samego śladu.
  • Praca z kodami kolorów. CSS, narzędzia projektowe i formaty obrazów zapisują kolory jako trójki hex, np. #d2511a. Przeliczenie każdej pary na dziesiętny daje zapis rgb(210, 81, 26) oczekiwany przez próbnik kolorów lub narzędzie do sprawdzania dostępności.
  • Dekodowanie uprawnień do plików. Wartości chmod w systemach Unix są zapisywane ósemkowo: 755 oznacza rwxr-xr-x po przeliczeniu każdej cyfry ósemkowej na trzy bity binarne. Konwerter pokazuje to mapowanie w jednym kroku, więc możesz sprawdzić zestaw uprawnień bez sięgania po stronę podręcznika.
  • Debugowanie flag bitowych. Protokoły sieciowe, wywołania systemowe jądra i rejestry sprzętowe pakują wiele flag boolowskich w jedną liczbę całkowitą. Odczytanie tej liczby w formacie binarnym pokazuje od razu, które bity są ustawione — niezbędne, gdy szukasz powodu, dla którego flaga nie działa.

Typowe zastosowania

Konwersja systemów liczbowych pojawia się w codziennej pracy dewelopera, specjalisty ds. bezpieczeństwa i inżyniera sprzętu wszędzie tam, gdzie liczba to coś więcej niż tylko licznik.

  • Firmware wbudowany: odczytaj zrzut hex z sondy JTAG, znajdź adres funkcji i wpisz polecenie punktu przerwania korzystając z dziesiętnego przesunięcia akceptowanego przez skrypt debuggera.
  • Bezpieczeństwo sieci: przelicz 32-bitową maskę sieci wyświetloną w notacji dziesiętno-kropkowej na binarną, policz długość prefiksu, a następnie zapisz formę CIDR dla reguły ACL.
  • Zadania CTF i wyzwania kryptograficzne: przełączaj się między hex, dziesiętnym i binarnym podczas porównywania wyciekniętego fragmentu klucza z kandydatem na jawny tekst pod operacją XOR.

Przykład krok po kroku

Wpisz 255 w panelu dziesiętnym. Panel hex zaktualizuje się do FF (lub 0xFF z włączonym przedrostkiem), panel binarny do 11111111 (zgrupowany jako 1111_1111), a panel ósemkowy do 377. Ustaw podstawę własnego panelu na 36, a ta sama wartość wyświetli się jako 73. Wpisz dużo większą wartość, np. 123456789012345678901234567890, w panelu dziesiętnym; panel hex użyje ścieżki BigInt i wyświetli 18EE90FF6C373E0EE4E3F0AD2.

FAQ

Czym jest podstawa systemu liczbowego?

Podstawa systemu liczbowego (radix) to liczba odrębnych cyfr, jakich używa system pozycyjny przed przeniesieniem do kolejnej pozycji. System dziesiętny (podstawa 10) używa cyfr 0–9; binarny (podstawa 2) — tylko 0 i 1; szesnastkowy (podstawa 16) — 0–9 i A–F. Wartość liczby nie zmienia się przy zmianie podstawy — zmienia się tylko sposób zapisywania i grupowania jej cyfr.

Dlaczego w programowaniu używa się systemu szesnastkowego?

Jedna cyfra hex odpowiada dokładnie czterem bitom binarnym, więc dwie cyfry hex pokrywają jeden bajt, a osiem cyfr hex — 32-bitowe słowo. Dzięki temu hex jest najbardziej zwartą czytelną dla człowieka formą adresów pamięci, zawartości rejestrów, trójek kolorów i kluczy kryptograficznych. Odczytanie 0xFF jest szybsze niż 11111111, a wzorzec bitowy jest widoczny od razu, gdy jest potrzebny.

Czy mogę konwertować powyżej podstawy 36?

To narzędzie zatrzymuje się na podstawie 36, ponieważ to górny limit natywnych API JavaScript parseInt i toString, które przyjmują cyfry 0–9 i A–Z jako alfabet. Podstawy 37–62 są możliwe przy użyciu niestandardowego alfabetu (Base58 stosowany w adresach Bitcoin jest jednym z przykładów), ale są śledzone jako osobne narzędzie, ponieważ każda wyższa podstawa wymaga własnej kanonicznej kolejności cyfr.

Czy narzędzie obsługuje liczby ujemne i zmiennoprzecinkowe?

Ujemne liczby całkowite są wyświetlane z wiodącym znakiem minus w każdej podstawie — takie samo zachowanie jak w Number.prototype.toString. Reprezentacja uzupełnieniowa (two's-complement) dla wybranej szerokości bitowej (8, 16, 32, 64) to osobny widok, który planujemy dodać. Konwersja liczb zmiennoprzecinkowych jest również poza zakresem tej wersji; narzędzie obsługuje wyłącznie liczby całkowite.

Konwersja systemów liczbowych to małe zadanie, które pojawia się ciągle w pracy z firmware, bezpieczeństwem i grafiką. Wykonywanie jej w zakładce przeglądarki, z użyciem tych samych prymitywów arytmetycznych co Node i V8, sprawia, że praca jest szybka, a dane pozostają na Twoim komputerze.