Szesnastkowy system liczbowy
0hex | = | 0dec | = | 0oct | 0 | 0 | 0 | 0 | |||
1hex | = | 1dec | = | 1oct | 0 | 0 | 0 | 1 | |||
2hex | = | 2dec | = | 2oct | 0 | 0 | 1 | 0 | |||
3hex | = | 3dec | = | 3oct | 0 | 0 | 1 | 1 | |||
4hex | = | 4dec | = | 4oct | 0 | 1 | 0 | 0 | |||
5hex | = | 5dec | = | 5oct | 0 | 1 | 0 | 1 | |||
6hex | = | 6dec | = | 6oct | 0 | 1 | 1 | 0 | |||
7hex | = | 7dec | = | 7oct | 0 | 1 | 1 | 1 | |||
8hex | = | 8dec | = | 10oct | 1 | 0 | 0 | 0 | |||
9hex | = | 9dec | = | 11oct | 1 | 0 | 0 | 1 | |||
Ahex | = | 10dec | = | 12oct | 1 | 0 | 1 | 0 | |||
Bhex | = | 11dec | = | 13oct | 1 | 0 | 1 | 1 | |||
Chex | = | 12dec | = | 14oct | 1 | 1 | 0 | 0 | |||
Dhex | = | 13dec | = | 15oct | 1 | 1 | 0 | 1 | |||
Ehex | = | 14dec | = | 16oct | 1 | 1 | 1 | 0 | |||
Fhex | = | 15dec | = | 17oct | 1 | 1 | 1 | 1 | |||
Szesnastkowy system liczbowy (czasem nazywany heksadecymalnym, skrót hex) – pozycyjny system liczbowy, w którym podstawą jest liczba 16. Skrót hex pochodzi od angielskiej nazwy hexadecimal. Do zapisu liczb w tym systemie potrzebne jest szesnaście cyfr. Poza cyframi dziesiętnymi od 0 do 9 używa się pierwszych sześciu liter alfabetu łacińskiego: A, B, C, D, E, F (dużych lub małych).
Jak w każdym pozycyjnym systemie liczbowym, liczby zapisuje się tu jako ciągi znaków, z których każdy jest mnożnikiem kolejnej potęgi liczby stanowiącej podstawę systemu. Np. liczba zapisana w dziesiętnym systemie liczbowym jako 1000, w systemie szesnastkowym przybiera postać 3E8, gdyż:
Informatyka
W praktyce najczęściej stosuje się szesnastkowy system liczbowy w informatyce.
Z racji budowy komputerów, w której np. adresy są potęgą liczby 2 oraz dzielą się przez 8 i 16, często stosowany jest system heksadecymalny.
Wartość pojedynczego bajtu można opisać używając tylko dwóch cyfr szesnastkowych i odwrotnie - dowolne dwie cyfry szesnastkowe można zapisać jako bajt. W ten sposób kolejne bajty można łatwo przedstawić w postaci ciągu cyfr szesnastkowych. Jednocześnie zapis 4 bitów można prosto przełożyć na jedną cyfrę szesnastkową.
System szesnastkowy sprawdza się szczególnie przy zapisie dużych liczb takich jak adresy pamięci, zakresy parametrów itp. Na przykład:
216 = 65.536dec = 1.0000hex
224 = 16.777.216dec = 100.0000hex
232 = 4.294.967.296dec = 1.0000.0000hex
216-1 = 65.535dec = FFFFhex
224-1 = 16.777.215dec = FF.FFFFhex
232-1 = 4.294.967.295dec = FFFF.FFFFhex
FFFFhex, FF.FFFFhex i FFFF.FFFFhex są krótsze i łatwiejsze do zapamiętania.
W matematyce podstawę liczb zapisanych w systemach niedziesiętnych dopisuje się czasem w dolnym indeksie (zapisaną w systemie dziesiętnym). Konwencja ta nie jest używana w informatyce. W różnych językach programowania zapis liczb szesnastkowych wygląda rozmaicie:
C, C++, C#, Java - stosuje się prefiks 0x (zero oraz x) np. 0x102f, a w ciągach tekstowych \x, np. "\x2f"
W Javie można też stosować szesnastkowe liczby zmiennoprzecinkowe, oraz używać litery p jako wykładnika binarnego, analogicznie jak litera e używana jest w roli wykładnika dziesiętnego, np.
Pascal - stosuje się prefiks $, np. $102f
niektóre wersje asemblera - za liczbą litera h, np 102fh, lub podobnie jak w C prefix 0x
HTML - kolory RGB (Red - Czerwony, Green - Zielony, Blue - Niebieski) zapisuje się jako 3 liczby hex od 0 do FF(255) poprzedzone znakiem #, np. różowy - #FF8080, szary - #808080, czarny - #000000. Zapis ten dotyczy koloru 24-bitowego przypisywanego różnym elementom graficznym dokumentu HTML.