2 | 1
1 | 0
Wspak dostajemy: 1010 1001, czyli wyjściową liczbę.
2. Szesnastkowy (heksadecymalny, w skrócie hex)
Jako że system dwójkowy ma mniej cyfr niż dziesiętny, do przedstawienia względnie małych liczb trzeba użyć dużo zer i jedynek. Jako że bajt ma 8 bitów, podzielono go na dwie równe, 4-bitowe części. Teraz bajt można już reprezentować dwoma znakami, a nie ośmioma. Na każdy taki znak składa się 2A4=16 możliwości. Stąd wzięła się nazwa szesnastkowy.
Powstał jednak problem: cyfr jest tylko 10, a trzeba mieć 16. Co zrobić?
Postanowiono liczbom 10-15 przyporządkować odpowiednio znaki A-F.
Np.
Liczba 255 dziesiętnie =1111 1111 binarnie = FF szesnastkowo (1111 bin = 15 dec = F hex)
Liczba 150 dziesiętnie = 1001 0110 binarnie = 96 szesnastkowo.
Należy zauważyć ścisły związek między systemem dwójkowym i szesnastkowym: 1 cyfra szesnastkowa to 4 bity, co umożliwia błyskawiczne przeliczanie między obydwoma systemami: wystarczy tłumaczyć po 4 bity (1 cyfrę hex) na raz i zrobione.
Przeliczenie liczby zapisanej w systemie szesnastkowym na dziesiętny jest równie proste, jak tłumaczenie z dwójkowego na dziesiętny. Każdą cyfrę mnożymy przez odpowiednią potęgę podstawy (podstawa wynosi 16 w systemie szesnastkowym).
Oto przykład:
10A szesnastkowo =
1*16A2 +0*16A1 + A*16A0 =
256 + 0 + 10 =
266 dziesiętnie.
Działanie odwrotne też nie jest trudne: naszą liczbę dzielimy ciągle (do chwili uzyskania ilorazu równego 0) przez 16, po czym zapisujemy reszty z dzielenia wspak:
(przeskocz konwersje liczby dziesiętnej na szesnastkowa)
16 | 10
Wspak dostajemy kolejno: 1, 0, 10, czyli 10A, czyli wyjściową liczbę.
Podczas pisania programów, liczby w systemie szesnastkowym oznacza się przez dodanie na końcu litery h (lub z przodu 0x), a liczby w systemie dwójkowym - przez dodanie litery b na końcu.
Tak więc, 101 oznacza dziesiętną liczbę o wartości 101, lOlb oznacza liczbę 101 w systemie dwójkowym (czyli 5 w systemie dziesiętnym), a 101 h lub 0x101 oznacza liczbę 101 w systemie szesnastkowym (czyli 257 dziesiętnie).
10