Encoders & Utilities

Konwerter systemów liczbowych

Konwertuje między binarnym, ósemkowym, dziesiętnym i szesnastkowym. BigInt i operacje bitowe z szerokościami signed.

Bitwise operations

O tym narzędziu

Number Base Converter cross-tłumaczy integer między binarnym (baza 2), oktalnym (baza 8), dziesiętnym (baza 10) i hex (baza 16). Wpisz wartość w którymkolwiek z czterech pól, a pozostałe trzy aktualizują się synchronicznie. Matematyka dowolnej precyzji jest wbudowana — wklej 1024-bitowy hash i nadal dostaniesz dokładną odpowiedź, bez zaokrąglania floating-point.

Drugi panel uruchamia operacje bitowe na tej samej wartości: AND, OR, XOR, NOT, lewy shift, prawy shift, arytmetyczny prawy shift. Dla każdej operacji wybierasz szerokość integera (8/16/32/64 bity, signed lub unsigned), więc reprezentacje two's-complement są pokazane poprawnie — 0xFF to 255 w u8, ale -1 w i8, a narzędzie etykietuje oba. Live binarny preview podświetla indywidualne pozycje bitów, byś widział dokładnie, co się odwróciło.

Kiedy używać tego narzędzia

  • Czytanie i pisanie flag konfiguracji. Wiele API używa bitmask flag; konwersja 0b10110 na 22 lub odwrotnie to codzienny podatek tego stylu.
  • Debugowanie hex dumps. Bajt pokazujący 0xC0 w pamięci? To 192 dziesiętnie, 0b11000000 binarnie.
  • Obliczanie wartości kolorów. Kolory hex CSS, kody escape ANSI i strumienie bajtów formatów obrazów wszystkie żyją w hex.
  • Praca z uprawnieniami plików. 0o7550b111101101 — konwersja to fundament Chmod Calculator.

O BigInt i szerokościach signed

Natywne Number JavaScriptu traci precyzję poza 2^53. Używamy BigInt dla samej wartości, więc dowolny integer, który możesz zapisać, pasuje. Szerokości signed mają znaczenie dla liczb ujemnych: two's complement przy 8 bitach mówi 0b10000000 = -128; przy 16 bitach ten sam wzorzec to 32768. Narzędzie zawsze pokazuje Ci obie interpretacje, więc właściwa jest na jedno spojrzenie.

Najczęstsze pytania

Dlaczego 0xFF pokazuje się jako i 255, i -1?

Bo wzorzec bajtów jest ten sam — znaczenie zależy od tego, czy traktujesz go jako unsigned (u8 = 255), czy signed two's-complement (i8 = -1). Sprzęt nie wie który; system typów wie. Pokazujemy obie interpretacje, byś mógł odczytać wartość tak, jak Twój kod oczekuje. Dla szerszych integerów (u32 vs i32) ta sama logika stosuje się z innymi punktami break.

Jak dużą liczbę narzędzie może obsłużyć?

Dowolną — używamy BigInt JavaScript wewnętrznie, więc 4096-bitowe klucze RSA konwertują się tak łatwo jak 8-bitowe bajty. Panel bitwise-ops potrzebuje szerokości (8 do 64 bitów, signed lub unsigned), by two's-complement było zdefiniowane; poza 64 bity traktujemy wszystkie wartości jako unsigned i nie pokazujemy interpretacji ujemnych. Dla liczb kryptograficznej skali dziesiętne/hex/binarne wszystkie działają, ale tabela bitwise sensownie kończy się na 64.

Co to jest konwencja prefiksów?

Większość ekosystemów się zgadza: 0b dla binarnych (Python, JS, Rust), 0o dla oktalnych (Python, JS, Rust — starsza forma bare-leading-zero jest deprecated), 0x dla hex (uniwersalnie). Nasze narzędzie akceptuje inputy z lub bez prefiksów i zawsze emituje wyniki w konwencjonalnej prefiksowanej formie. C/C++ używa bare-leading-zero dla oktalnych (0755), co jest footgunem — nigdy nie wypisujemy tej formy.

Dlaczego shift-right zachowuje się czasem inaczej?

Są dwa right-shifty: logiczny (>>>) wypełnia wysokie bity zerami — używany dla wartości unsigned. Arytmetyczny (>>) wypełnia bitem znaku — zachowuje znak liczb ujemnych w two's complement. -8 >> 1 = -4 (arytmetyczny), ale -8 >>> 1 = 2147483644 (logiczny, 32-bit). Narzędzie eksponuje oba jako osobne przyciski.