Jak używać
- Wpisz liczbę do przeliczenia w polu „Liczba”.
- W polu „Podstawa wejściowa” wybierz podstawę, w której zapisano liczbę: od 2 do 36 lub Base62.
- Odczytaj wynik jednocześnie w systemie dwójkowym, ósemkowym, dziesiętnym, szesnastkowym, Base36 i Base62.
- Jeśli potrzebujesz innej podstawy, wybierz ją w polu „Własna podstawa”.
Liczby, a nie bajty
To narzędzie przelicza wartość liczby. Liczba dziesiętna 255 to 11111111 w systemie dwójkowym, 377 w ósemkowym, ff w szesnastkowym i 73 w Base36.
Kodowania bajtów, takie jak Base16 i Base2, robią coś innego: kodują tekst lub pliki. Tekst 255 to trzy znaki zapisane jako bajty 32 35 35 w hex lub 00110010 00110101 00110101 w zapisie binarnym. Do zapisu hex liczby używaj tej strony, a do zapisu hex znaków lub pliku koderów bajtów.
Jak działają pozycyjne systemy liczbowe
W każdym systemie cyfra ma wagę równą podstawie podniesionej do potęgi o wykładniku równym numerowi jej pozycji, liczonemu od prawej i zaczynając od zera. Hex ff to 15 × 16 + 15 = 255, a binarne 11111111 to 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255. W systemach o podstawie większej niż 10 kolejne cyfry oznacza się literami, więc w Base36 a oznacza 10, a z 35. Base62 dodaje też litery drugiej wielkości, więc wielkie i małe litery mają w nim różne wartości.
Jedna cyfra szesnastkowa odpowiada dokładnie 4 bitom, a jedna cyfra ósemkowa 3 bitom. Dlatego programiści używają systemu szesnastkowego i ósemkowego jako skróconego zapisu binarnego: 1111 1111 zamienia się grupa po grupie w ff.
Duże i ujemne liczby
Konwerter używa liczb całkowitych o dowolnej precyzji (JavaScript BigInt), więc długie liczby pozostają dokładne. Wiele kalkulatorów i zwykłe liczby JavaScript tracą precyzję powyżej 9007199254740991 (2 do potęgi 53 minus 1). Na przykład parseInt('ffffffffffffffff', 16) zwraca 18446744073709552000, a prawidłowa wartość, czyli największa 64-bitowa liczba całkowita bez znaku, to 18446744073709551615.
Liczba ujemna jest przeliczana razem ze znakiem minus, więc -255 to w hex -ff. Nie jest to kod uzupełnień do dwóch używany w pamięci dla liczb całkowitych o stałej szerokości. Aby go uzyskać, najpierw dodaj 2 do potęgi równej szerokości: dla 8 bitów -1 + 256 = 255, czyli ff. Obsługiwane są tylko liczby całkowite, nie ułamki. Wszystko działa w przeglądarce.
Konwersja systemów liczbowych w kodzie
// JavaScript
parseInt('ff', 16); // 255
(255).toString(2); // '11111111'
BigInt('0xffffffffffffffff').toString(10); // '18446744073709551615'
# Python
int('ff', 16) # 255
bin(255), oct(255), hex(255) # ('0b11111111', '0o377', '0xff')
Najczęściej zadawane pytania
Jak przeliczyć liczbę binarną na dziesiętną?
Wpisz liczbę binarną, w polu „Podstawa wejściowa” wybierz „Binarny (2)” i odczytaj wynik dziesiętny. Ręcznie: zsumuj wagi pozycji wszystkich cyfr 1, np. binarne 1010 to 8 + 2 = 10.
Jak przeliczyć liczbę dziesiętną na szesnastkową?
Wpisz liczbę przy wybranej opcji „Dziesiętny (10)” i odczytaj wynik szesnastkowy. Ręcznie: dziel wielokrotnie przez 16 i zapisz reszty w odwrotnej kolejności. 255 podzielone przez 16 to 15 reszty 15, co daje ff.
Czy wielkość liczby jest ograniczona?
Nie ma stałego limitu. Narzędzie używa arytmetyki BigInt, więc liczba złożona z setek cyfr jest przeliczana dokładnie. Bardzo długie liczby po prostu wymagają nieco więcej czasu.
Dlaczego zapis hex liczby 255 różni się tu od wyniku kodera Base16?
Czy można przeliczać liczby z częścią ułamkową?
Nie. Konwerter obsługuje tylko liczby całkowite. Ułamki takie jak 0,1 często nie mają dokładnej reprezentacji w systemie o innej podstawie, więc wykraczają poza jego zakres.