Š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.