System szesnastkowy (heksadecymalny) — definicja, zasady i zastosowania

System szesnastkowy (heksadecymalny) — definicja, zasady i zastosowania. Praktyczny przewodnik: konwersje, reprezentacja bitów, zastosowania w programowaniu i elektronice.

Autor: Leandro Alegsa

System liczb szesnastkowych, często nazywany też szesnastkowym (ang. hexadecimal, skrót: hex), jest systemem liczbowym składającym się z 16 symboli (podstawa 16). W standardowym systemie dziesiętnym (dziesiętnym) używamy dziesięciu znaków: 0–9. W systemie szesnastkowym oprócz cyfr 0–9 stosuje się jeszcze sześć liter alfabetu: alfabetu angielskiego, a konkretnie A, B, C, D, E i F, które odpowiadają wartościom dziesiętnym 10–15 (A = 10, B = 11, …, F = 15). Każda pozycja w zapisie szesnastkowym ma wagę będącą kolejną potęgą 16 (… , 16^2, 16^1, 16^0).

Dlaczego używa się systemu szesnastkowego? Ludzie najczęściej używają systemu dziesiętnego — prawdopodobnie dlatego, że mamy dziesięć palców. Komputery natomiast operują dwoma stanami: włączony/wyłączony, co daje system binarny (0 i 1). Ciągi bitów (np. 11011011) bywają długie, więc wygodnie jest je grupować. W przeszłości grupowano je po 3 bity (stąd powiązanie z ósemkowym systemem), ponieważ 3 bity reprezentują osiem stanów (0–7). Z czasem, przy rosnącej popularności architektur bazujących na bajtach i ich wielokrotnościach, wygodniej stało się grupować po 4 bity: 4 bity dają 16 różnych kombinacji, czyli dokładnie tyle, ile symboli ma system szesnastkowy.

W żargonie komputerowym cztery bity nazywane są nibble (czasem nybble). Jeden nibble odpowiada jednej cyfrze w systemie szesnastkowym (0–9, A–F). Dwie nibble tworzą bajt (8 bitów). Ponieważ wiele operacji komputerowych odbywa się na bajtach lub ich wielokrotnościach (16, 32, 64 bity itp.), zapis w systemie szesnastkowym znacznie upraszcza prezentację i analizę danych binarnych.

Przyporządkowanie i powiązanie z binarnym

  • Każda cyfra szesnastkowa odpowiada dokładnie 4 bitom (np. 0 = 0000, 1 = 0001, …, F = 1111).
  • Przykłady odwzorowania: 0x0 = 0000, 0x1 = 0001, 0x2 = 0010, 0x3 = 0011, 0x4 = 0100, 0x5 = 0101, 0x6 = 0110, 0x7 = 0111, 0x8 = 1000, 0x9 = 1001, 0xA = 1010, 0xB = 1011, 0xC = 1100, 0xD = 1101, 0xE = 1110, 0xF = 1111.
  • Dzięki temu konwersja między binarnym a szesnastkowym polega na dzieleniu ciągu bitów na grupy po 4 od prawej strony i zamianie każdej grupy na odpowiadającą jej cyfrę hex.

Konwersje — przykłady i metody

Konwersja z systemu szesnastkowego na dziesiętny: należy rozwinąć liczbę jako sumę cyfr razy potęgi 16. Przykład: 3A716 = 3·16^2 + A·16^1 + 7·16^0 = 3·256 + 10·16 + 7 = 768 + 160 + 7 = 93510.

Konwersja z dziesiętnego na szesnastkowy: stosuje się dzielenie przez 16 i zapis reszt. Przykład: 202110:

  • 2021 ÷ 16 = 126 reszty 5 → najmniej znacząca cyfra = 5
  • 126 ÷ 16 = 7 reszty 14 → reszta 14 = E
  • 7 ÷ 16 = 0 reszty 7 → kolejna cyfra = 7
Wynik: 202110 = 7E516.

Praktyczny przykład odczytu: zapis 63h lub 0x63 oznacza liczbę zapisaną w systemie szesnastkowym. 0x63 = 6·16 + 3 = 96 + 3 = 9910. W językach programowania najczęściej spotykane są przedrostki 0x (C, C++, Python, Java) lub przedrostek/sufiks zależny od środowiska (np. sufiks h w asemblerze). Wiele narzędzi akceptuje zarówno małe, jak i wielkie litery A–F (bez rozróżniania wielkości znaków).

Zastosowania praktyczne

  • Adresowanie pamięci i debugowanie niskopoziomowe — adresy często zapisuje się w hex dla czytelności.
  • Kolory w grafice i na stronach WWW — kody barw w formacie #RRGGBB są podawane w szesnastkowym (np. #FF0000 = czerwony).
  • Reprezentacja danych binarnych — hex skraca zapis długich ciągów bitów (np. bajty logów, zrzuty pamięci).
  • Protokóły sieciowe, sumy kontrolne, kryptografia — wartości i identyfikatory często prezentuje się w hex.
  • Programowanie niskopoziomowe i asembler — instrukcje, maski bitowe i stałe często wyrażane w hex.

Uwagi praktyczne i konwencje

  • Notacje: popularne konwencje zapisu to 0xA3, A3h (w niektórych asemblerach) oraz zapis bezpośredni (np. #A3) zależnie od środowiska.
  • Jeśli zapis zaczyna się od litery (np. A3h), w niektórych dialektach asemblera trzeba poprzedzić go zerem (0A3h), żeby uniknąć pomyłek z identyfikatorami.
  • Operacje arytmetyczne w hex działają tak samo jak w innych systemach pozycyjnych — dodajemy kolumny cyfr z przeniesieniem (carried) przy przekroczeniu 16.
  • W większości narzędzi i języków programowania litery A–F są case-insensitive (A lub a = 10).

System szesnastkowy jest zatem narzędziem ułatwiającym pracę z danymi binarnymi: jest czytelniejszy dla ludzi niż długie ciągi zer i jedynek, a jednocześnie ma prostą, ścisłą relację z systemem binarnym dzięki grupowaniu po 4 bity.

Wartości szesnastkowe

System szesnastkowy jest podobny do systemu liczb ósemkowych (podstawa 8), ponieważ każdy z nich można łatwo porównać do systemu liczb binarnych. System szesnastkowy używa czterobitowego kodowania binarnego. Oznacza to, że każda cyfra w systemie szesnastkowym jest taka sama jak cztery cyfry w systemie binarnym. Octal używa trzy-bitowego systemu binarnego.

W systemie dziesiętnym, pierwsza cyfra to jedno miejsce, następna cyfra po lewej to miejsce dziesiętne, następna to miejsce setne, itd. W systemie szesnastkowym, każda cyfra może mieć 16 wartości, a nie 10. W systemie szesnastkowym każda cyfra może mieć 16 wartości, a nie 10. Oznacza to, że cyfry mają miejsce jeden, szesnaście, a następna jest miejscem 256. Tak więc 1h = 1 miejsce po przecinku, 10h = 16 miejsc po przecinku, a 100h = 256 w systemie dziesiętnym.

Przykładowe wartości liczb szesnastkowych przeliczone na dwu-, ósemkowe i dziesiętne.

Hex

Binarny

Październik

Dziesiątkowy

0

0

0

0

1

1

1

1

2

10

2

2

3

11

3

3

4

100

4

4

5

101

5

5

6

110

6

6

7

111

7

7

8

1000

10

8

9

1001

11

9

A

1010

12

10

B

1011

13

11

C

1100

14

12

D

1101

15

13

E

1110

16

14

F

1111

17

15

10

1 0000

20

16

11

1 0001

21

17

24

10 0100

44

36

5E

101 1110

136

94

100

1 0000 0000

400

256

3E8

11 1110 1000

1750

1000

1000

1 0000 0000 0000

10000

4096

FACE

1111 1010 1100 1110

175316

64206

Konwersja

Binarny do szesnastkowego

Zmiana liczby z binarnej na szesnastkową wykorzystuje metodę grupowania. Numer binarny jest podzielony na grupy składające się z czterech cyfr, zaczynając od prawej. Grupy te są następnie konwertowane na cyfry w systemie szesnastkowym, jak pokazano na powyższym wykresie dla liczb w systemie szesnastkowym od 0 do F. Aby zmienić z szesnastkowego na szesnastkowy, wykonuje się odwrotną zmianę. Cyfry szesnastkowe są zmieniane na binarne, a grupowanie jest zazwyczaj usuwane.

Binarny

Ugrupowania

Hex

01100101

0110

0101

65

010010110110

0100

1011

0110

4B6

1101011101011010

1101

0111

0101

1010

D75A

Kiedy ilość bitów w liczbach binarnych nie jest wielokrotnością 4, jest ona wyściełana zerami, aby to zrobić. Przykłady:

  • binarny 110 = 0110, co stanowi 6 Hex.
  • binarny 010010 = 00010010, czyli 12 Hex.

Sześciokrotne do dziesiętnego

Aby przekonwertować liczbę z szesnastkowego na dziesiętny, istnieją dwa wspólne sposoby.

Pierwsza metoda jest częściej wykonywana przy konwersji ręcznej:

  1. Dla każdej cyfry szesnastkowej należy użyć wartości dziesiętnej. Dla 0-9 jest ona taka sama, ale A = 10, B = 11, C = 12, D = 13, E = 14 i F = 15.
  2. Zachowaj sumę liczb przeliczonych na każdym etapie poniżej.
  3. Zacznij od najmniej znaczącej cyfry szesnastkowej. To jest ta cyfra po prawej stronie. To będzie pierwsza pozycja w sumie.
  4. Weź drugą co do wielkości cyfrę. To jest obok cyfry po prawej stronie. Pomnóż wartość dziesiętną cyfry przez 16. Dodaj to do sumy.
  5. Zrób to samo dla trzeciej co do wielkości znaczącej cyfry, ale pomnóż ją przez 162 (to jest 16 kwadratów, czyli 256). Dodaj ją do sumy.
  6. Kontynuuj dla każdej cyfry, mnożąc każde miejsce przez kolejną potęgę 16. (4096, 65536, itd.)

 

Lokalizacja

6

5

4

3

2

1

Wartość

1048576 (165)

65536 (164)

4096 (163)

256 (162)

16(161)

1 (160)


Kolejna metoda jest częściej wykonywana przy konwersji numeru w oprogramowaniu. Nie musi wiedzieć, ile cyfr ma dana liczba przed jej rozpoczęciem i nigdy nie mnoży się jej przez więcej niż 16, ale na papierze wygląda na dłuższą.

  1. Dla każdej cyfry szesnastkowej należy użyć wartości dziesiętnej. Dla 0-9 jest ona taka sama, ale A = 10, B = 11, C = 12, D = 13, E = 14 i F = 15.
  2. Zachowaj sumę liczb przeliczonych na każdym etapie poniżej.
  3. Zacznij od najważniejszej cyfry (cyfra po lewej stronie). Jest to pierwsza pozycja w sumie.
  4. Jeśli istnieje inna cyfra, należy pomnożyć sumę przez 16 i dodać wartość dziesiętną kolejnej cyfry.
  5. Powtarzaj powyższy krok, aż do momentu, gdy nie będzie więcej cyfr.


Przykład: 5Fh i 3425h z dokładnością do jednego miejsca po przecinku, metoda 1

 

5Fh do dziesiętnego

Hex

Dziesiątkowy

5Fh

=

( 5 x 16 )

+

( 15 x 1 )

=

80

+

15

5Fh

=

95

 

3425h do dziesiątego miejsca po przecinku

Hex

Dziesiątkowy

3425h

=

( 3 x 4096 )

+

( 4 x 256 )

+

( 2 x 16)

+

( 5 x 1 )

=

12288

+

1024

+

32

+

5

3425h

=

13349

Przykład: 5Fh i 3425h z dokładnością do jednego miejsca po przecinku, metoda 2

 

5Fh do dziesiętnego

Hex

Dziesiątkowy

Suma

=

5

=

(5 x 16) + 15

Suma

=

80 + 15 (brak więcej cyfr)

5Fh

=

95

 

3425h do dziesiątego miejsca po przecinku

Hex

Dziesiątkowy

Suma

=

3

=

(3 x 16) + 4 = 52

Suma

=

(52 x 16) + 2 = 834

Suma

=

(834 x 16) + 5 = 13349

3425h

=

13349

Powiązane strony

Pytania i odpowiedzi

P: Co to jest system liczb szesnastkowych?


O: System liczbowy szesnastkowy to system liczbowy o podstawie 16, składający się z 16 symboli.

P: Jakich dziesięciu symboli używa się w systemie dziesiętnym (podstawa 10)?


O: Dziesięć symboli używanych w systemie dziesiętnym (baza 10) to 0,1,2,3,4,5,6,7,8 i 9.

P: Jakich sześciu dodatkowych symboli używa system szesnastkowy?


O: W systemie szesnastkowym używa się liter z alfabetu angielskiego - A, B, C, D, E i F.

P: Ile bitów zawiera jeden bajt w nowoczesnych komputerach?


O: W nowoczesnych komputerach każdy bajt zawiera zazwyczaj osiem bitów.

P: Jak inżynierowie i informatycy nazywają wartości czterobitowe?


O: Inżynierowie i informatycy określają wartości czterobitowe jako nibble (czasami pisane jako nybble).

P: Jak uniknąć pomyłki z innymi systemami numeracji przy zapisie liczb szesnastkowych?


O: Aby uniknąć pomyłek z innymi systemami numeracji przy zapisie liczb szesnastkowych, można dodać "h" po lub "0x" przed liczbą. Na przykład 63h lub 0x63 oznacza 63 w systemie szesnastkowym.


Przeszukaj encyklopedię
AlegsaOnline.com - 2020 / 2025 - License CC3