Konwertery

Konwerter systemów liczbowych: dwójkowy, ósemkowy, dziesiętny, hex

Wpisz liczbę w dowolnym z czterech systemów, a konwerter pokaże ją w pozostałych, także dla bardzo dużych liczb i w kodzie uzupełnień do dwóch dla 8–64 bitów.

Obliczenia wykonuje Twoja przeglądarka. Wpisane dane nie są wysyłane na serwer.

0b
0o
0x

Kod uzupełnień do dwóch (U2)

SzerokośćHEXBez znakuZe znakiem (U2)
8 bitówFF255-1
16 bitów00FF255255
32 bitów000000FF255255
64 bitów00000000000000FF255255

Systemy pozycyjne

W systemie pozycyjnym o podstawie b każda cyfra ma wagę równą potędze b zależnej od pozycji. W systemie dziesiętnym 255 = 2·10² + 5·10¹ + 5·10⁰. W dwójkowym są tylko cyfry 0 i 1, w ósemkowym 0–7, a w szesnastkowym 0–9 i litery A–F oznaczające wartości 10–15. Ta sama liczba 255 to więc 11111111 dwójkowo, 377 ósemkowo i FF szesnastkowo.

DECBINOCTHEX
10101012A
2551111 1111377FF
1024100 0000 00002000400
655351111 1111 1111 1111177777FFFF

Jedna cyfra szesnastkowa odpowiada dokładnie czterem bitom, a jedna ósemkowa trzem, dlatego te systemy wygodnie skracają zapis dwójkowy. Zapis ósemkowy spotkasz m.in. w uprawnieniach plików, które przeliczysz w kalkulatorze chmod.

Prefiksy w kodzie

Według MDN JavaScript zapisuje liczby dwójkowe z prefiksem 0b, ósemkowe z0o, a szesnastkowe z 0x (wielkość litery nie ma znaczenia). Python używa tych samych prefiksów i dopuszcza podkreślenie między cyframi, np. 0b1111_1111. Konwerter przyjmuje liczby z prefiksami i bez nich, a spacje i podkreślenia pomija.

Kod uzupełnień do dwóch

Kod uzupełnień do dwóch (U2) to zapis liczb całkowitych ze znakiem, w którym najwyższy bit słowa ma wagę ujemną. MDN pokazuje to przy funkcji BigInt.asIntN: dla 4 bitów wartość 25 daje zapis 1001, który w U2 oznacza -7. Tabela w konwerterze pokazuje, jak wpisana liczba wygląda w słowie 8-, 16-, 32- i 64-bitowym i jaką ma wartość ze znakiem oraz bez znaku. Liczba ujemna jest pokazywana w zapisie U2, np. -1 w 8 bitach to FF.

Najczęstsze pytania

Jak zamienić liczbę dziesiętną na dwójkową?

Dziel liczbę przez 2 i zapisuj reszty, aż wynik dzielenia będzie równy 0, a potem odczytaj reszty od ostatniej do pierwszej. Na przykład 13: 13/2 = 6 r. 1, 6/2 = 3 r. 0, 3/2 = 1 r. 1, 1/2 = 0 r. 1, więc 13 to 1101.

Co oznacza prefiks 0x przed liczbą?

W JavaScripcie i Pythonie 0x oznacza zapis szesnastkowy, 0b dwójkowy, a 0o ósemkowy. Na przykład 0xFF, 0b11111111 i 0o377 to ta sama liczba 255.

Dlaczego 0xFF to raz 255, a raz -1?

Zależy od interpretacji. Jako liczba bez znaku 8 bitów 11111111 to 255, a w kodzie uzupełnień do dwóch najwyższy bit oznacza liczbę ujemną i ten sam zapis to -1.

Źródła

  1. Lexical grammar: Numeric literals, MDN
  2. Lexical analysis: Integer literals, Python Software Foundation
  3. BigInt.asIntN(), MDN
  • Konwertery

    Base64

    Zakoduj tekst lub plik w Base64 albo zdekoduj Base64 z powrotem, z obsługą polskich znaków (UTF-8), wariantu base64url i adresów data:.

  • Konwertery

    Timestamp Unix

    Zamień znacznik czasu Unix (sekundy, milisekundy, mikro- lub nanosekundy) na datę w dowolnej strefie czasowej albo datę na znacznik czasu.

  • Konwertery

    Kodowanie URL

    Zakoduj tekst do bezpiecznej postaci w adresie URL (np. spacja jako %20, ą jako %C4%85) albo zdekoduj zakodowany adres i rozłóż go na części oraz parametry.

  • Konwertery

    Tester regex

    Sprawdź wyrażenie regularne na własnym tekście: podświetlone dopasowania, grupy i grupy nazwane, podmiana z $1 i ochrona przed zawieszeniem przy wolnych wzorcach.

Niezbędne (zawsze włączone). Pamięć przeglądarki przechowuje wybrany motyw, polubione artykuły i Twoją decyzję o zgodzie. Nie używamy do tego plików cookies.