Šestnajstiški številski sistem (osnova 16), pogosto skrajšan v pogovornem žargonu, je številski sistem, sestavljen iz 16 simbolov (osnova 16). Standardni sistem, ki ga ljudje običajno uporabljamo, je desetiški (osnova 10) in uporablja deset simbolov: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Ker v šestnajstiškem sistemu potrebujemo še šest dodatnih vrednosti, se za njih uporabljajo črke iz angleške abecede, in sicer A, B, C, D, E in F. Tako šestnajstiški A = desetiški 10, šestnajstiški F = desetiški 15.

Zakaj uporabljamo šestnajstiški sistem

Ljudje večinoma uporabljamo desetiški sistem — verjetno zato, ker imamo deset prstov. Računalniki pa delujejo na osnovi dveh stanj (vklop/izklop), zato temeljijo na binarnem sistemu (0 in 1). Zelo dolge binarne nize je priročno združevati v večje skupine za lažje branje in zapisovanje. Ker je 16 = 2^4, je vsak šestnajstiški znak natanko predstavitev štirih bitov. Zato je šestnajstiški sistem pri računalništvu zelo uporaben: skrajša in poenostavi zapis binarnih podatkov.

Bit, nibble, bajt in povezava s šestnajstiškim

V računalniškem žargonu štirje biti tvorijo nibble (včasih nybble) — točno eno šestnajstiško števko, zapisana s simbolom 0–9 ali A–F. Dva nibla sestavljata bajt (8 bitov). Pri delu s podatki in naslovnimi prostori se zato pogosto uporablja šestnajstiško zapisovanje, saj en hex-znak predstavlja natanko 4 bite, dva hex-znaka pa 1 bajt.

Osnovna mapa hex simbolov

  • 0–9 predstavljajo vrednosti 0–9
  • A = 10, B = 11, C = 12, D = 13, E = 14, F = 15

Pretvorbe: kako računamo med sistemi

Osnovni postopek za pretvorbo šestnajstiškega števila v desetiško je množenje vsake cifre z ustrezno potenco 16 in seštevanje.

Primer: 1A316 = 1·16^2 + A·16^1 + 3·16^0 = 1·256 + 10·16 + 3·1 = 256 + 160 + 3 = 41910.

Za pretvorbo iz desetiškega v šestnajstiški sistem delimo število s 16 in zapisujemo ostanke:

Primer: 419 ÷ 16 = 26 ostanek 3 → prva (najmanj pomembna) hex-cifra = 3
26 ÷ 16 = 1 ostanek 10 → naslednja hex-cifra = A
1 ÷ 16 = 0 ostanek 1 → najvišja hex-cifra = 1
Rezultat: 41910 = 1A316.

Hex in binarno

Ker je 16 = 2^4, lahko za pretvorbo med hex in binarno enostavno razbijemo hex-cifre v grupe po štiri bite. Primer:

0x63 = 6 in 3 → 6 = 0110, 3 = 0011 → 0x63 = 0110 0011 (bin).

Obratno: binarni niz 11011011 razdelimo z desne v levo po štiri bite: 1101 1011 → 1101 = D, 1011 = B → hex = DB.

Notacije in sintaksa

Da bi se izognili zamenjavi z desetiškim ali osmeričnim zapisom, se za označevanje šestnajstiških števil uporabljajo različne konvencije:

  • Predpona 0x (npr. 0x63) je zelo razširjena v C/C++ in številnih drugih jezikih.
  • Pripona h (npr. 63h) se uporablja v nekaterih assemblerjih in dokumentaciji — upoštevajte, da v nekaterih assemblerjih števila, ki se začnejo z črko, zahtevajo predpono 0 (npr. 0ABh), da jih ne bi napačno interpretirali.
  • V nekaterih okoljih se uporablja tudi predpona $ (npr. $FF) ali zapis z znakom # pri barvnih kodah v spletnem oblikovanju (npr. #FF00AA).

Primeri uporabe

  • Prikaz barv v spletnem oblikovanju: barve so pogosto podane kot #RRGGBB v šestnajstiškem formatu (npr. #FF0000 = rdeča).
  • Pri prikazu pomnilniških naslovov in podatkov pri programiranju strojne opreme, v debuggiranju in pri razvoju operacijskih sistemov.
  • V kriptografiji in kodiranju, kjer so podatki pogosto predstavljeni kot nizi hex-znakov.
  • V formatu datotek in protokolih, kjer hex omogoča kompaktnejši in berljivejši zapis binarnih podatkov.

Dodatne opombe

Šestnajstiške črke so običajno zapisane z velikimi ali malimi črkami (A–F ali a–f); večina orodij ju obravnava enako. Ker vsak hex-znak predstavlja natančno štiri bite, je šestnajstiški zapis lahek za pretvorbo in interpretacijo binarnih struktur — zato je eden osnovnih in pogostih načinov predstavitve podatkov v računalništvu.

Za primer iz prvotnega besedila: zapisa 63h in 0x63 pomenita enako — število 63 v šestnajstiškem sistemu.