Šešioliktainė (hex) skaičių sistema — tai skaičių sistema, kurioje vietoje dešimties simbolių naudojama 16 skirtingų reikšmių (t. y. skaičių sistema, sudaryta iš 16 simbolių (bazė 16)). Standartinė skaitmenų sistema dažniausiai vadinama dešimtaine (bazė 10) ir joje naudojami simboliai 0–9. Šešioliktainėje sistemoje papildomai naudojamos raidės iš anglų kalbos abėcėlės, būtent A, B, C, D, E ir F, kurios atitinka dešimtines reikšmes nuo 10 iki 15 (A = 10, F = 15).

Pagrindai ir kodavimo ryšys su dvejetainiu

Žmonės dažniausiai naudoja dešimtainę sistemą (tikriausiai dėl dešimties pirštų), tačiau kompiuteriai dirba dvejetainiais signalais — bitais (0 arba 1). Dėl patogumo bitus dažnai grupuojama:

  • Anksčiau populiaru grupuoti po 3 bitus — tai susiję su aštuonetu (octal) — 3 bitai gali reikšti 0–7.
  • Šiuolaikinėje skaičiavimų technikoje patogiau grupuoti po 4 bitus: 4 bitai suteikia 16 galimų reikšmių, todėl vienas 4 bitų fragmentas atitinka vieną šešioliktainį skaitmenį. Tokia 4 bitų grupė kompiuterių žargone vadinama nibble (kartais rašoma nybble).
  • Du nibble sudaro baitą (8 bitus), o baitas yra dažniausiai naudojamas vienetas daugumoje kompiuterinių operacijų (8, 16, 32, 64 bitų žodžiai ir t. t.).

Dėl šios atitikties šešioliktainiai skaičiai ypač palengvina ilgesnių dvejetainių eilučių skaitymą ir rašymą.

Skaitmenų atvaizdavimas (lentelė)

  • 0 = 0 (d) = 0000 (b)
  • 1 = 1 (d) = 0001 (b)
  • 2 = 2 (d) = 0010 (b)
  • 3 = 3 (d) = 0011 (b)
  • 4 = 4 (d) = 0100 (b)
  • 5 = 5 (d) = 0101 (b)
  • 6 = 6 (d) = 0110 (b)
  • 7 = 7 (d) = 0111 (b)
  • 8 = 8 (d) = 1000 (b)
  • 9 = 9 (d) = 1001 (b)
  • A = 10 (d) = 1010 (b)
  • B = 11 (d) = 1011 (b)
  • C = 12 (d) = 1100 (b)
  • D = 13 (d) = 1101 (b)
  • E = 14 (d) = 1110 (b)
  • F = 15 (d) = 1111 (b)

Žymėjimas

Norint aiškiai nurodyti, kad skaičius yra šešioliktainis, paprastai naudojami šie žymėjimai:

  • Prieš skaičių dedamas 0x: pavyzdžiui, 0x63.
  • Priešdėlis h po skaičiaus: pavyzdžiui, 63h. (Kai kuriuose asembleriuose šešioliktainis, prasidedantis raide, reikalauja pridedamo nulio: pvz., 0Ah vietoje Ah.)
  • Spalvų žymėjimui CSS dažnai naudojamas #, pvz., #FF00FF reiškia magentą.

Raidės A–F paprastai yra didžiosios arba mažosios — skaičius nekeičiantis reikšmės (case-insensitive): 0xA1 = 0xa1.

Konvertavimas — keli pavyzdžiai

1) Iš šešioliktainio į dešimtainį (pvz., 3A7):

3A7₁₆ = 3·16² + A·16¹ + 7·16⁰ = 3·256 + 10·16 + 7 = 768 + 160 + 7 = 935₁₀.

2) Iš dvejetainio į šešioliktainį (pvz., 11011011):

Padalinti bitų eilutę į grupes po 4 iš dešinės: 1101 1011 → D B → 0xDB.

3) Iš dešimtainio į šešioliktainį (pvz., 2024):

Dalijame iš 16 ir surenkame liekanas:

  • 2024 / 16 = 126, liekana 8 → paskutinis skaitmuo 8
  • 126 / 16 = 7, liekana 14 → E
  • 7 / 16 = 0, liekana 7 → 7

Rezultatas: 0x7E8.

4) Šešioliktainiai trupmenys: pavyzdžiui, 0xA.F = 10 + 15/16 = 10.9375 (dešimtainiu).

Praktinis naudojimas ir pastabos

  • Šešioliktainiai skaičiai plačiai naudojami atminties adresams, mašininiam kodui, heksadesimaliems keitikliams, spalvų kodams (#RRGGBB) ir duomenų atvaizdavimui vietoje ilgo dvejetainio teksto.
  • Bitų modelių interpretacija: šešioliktainis skaičius tiesiogiai atspindi dvejetainę bitų seką, todėl jis yra patogus priemonė analizuojant žemo lygio bitų išsidėstymą (pvz., bitų kaukes, flags).
  • Neigiamų skaičių atvaizdavimas dažnai vyksta naudojant dvejetainės komplemento (two's complement) formatą. Pavyzdžiui, baitas 0xFF reiškia 255 dešimtainiu arba −1, jei tai yra 8 bitų two's complement reikšmė.
  • Praktiniai patarimai: dažnai rašant šešioliktainius naudinga skaičius suskirstyti po dvi ar keturias vietas (pvz., 0xDE AD BE EF), kad būtų lengviau skaityti; atkreipkite dėmesį į reikalavimus konkrečioje kalboje ar assembleryje dėl žymėjimo (0x, h, # ir t. t.).

Šešioliktainė sistema yra paprasta, aiški ir ypač tinkama darbui su bitais bei baitais — todėl ji išliko pagrindine priemone programų kūrėjams, inžinieriams ir tinklo specialistams.