Шестнадесетичната бройна система, често съкращавана до "шестнадесетична", е бройна система, съставена от 16 символа (основа 16). Стандартната бройна система се нарича десетична (основа 10) и използва десет символа: 0,1,2,3,4,5,6,7,8,9. Шестнадесетичната система използва десетичните числа и шест допълнителни символа. Няма цифрови символи, които да представят стойности, по-големи от девет, затова се използват букви от английската азбука, а именно A, B, C, D, E и F. Шестнадесетична A = десетична 10, а шестнадесетична F = десетична 15.
Основни принципи и позиционна стойност
Шестнадесетичната система е позиционна: всяка цифра има стойност, определена от позицията ѝ и от степен на основата 16. Например числото 2F316 означава 2·16² + F·16¹ + 3·16⁰ = 2·256 + 15·16 + 3 = 512 + 240 + 3 = 75510. Мястото най вдясно е 16⁰ = 1, следващото е 16¹ = 16, след това 16² = 256 и т.н.
Връзка с двоичната система и "нибъл"
Хората използват предимно десетичната система (основа 10), където всяка цифра може да има една от десетте стойности между нула и десет. Това вероятно се дължи на факта, че хората имат десет пръста на ръцете си. Компютрите обикновено представят числата в двоична система (основа 2). В двоичната система всяка "двоична цифра" се нарича бит и може да има само една от две стойности: единица или нула. Тъй като двете възможни стойности на един бит представляват много по-малко информация от десетичната цифра, двоичното представяне на цели числа често изисква много повече битове, отколкото десетични цифри.
Шестнадесетичната система спестява писане и четене на дълги поредици от битове: всяка шестнадесетична цифра съответства точно на група от четири двоични бита (4 бита = 1 "нибъл" или nibble). По този начин една осембитова стойност може да се представи с две шестнадесетични цифри. Пример: десетичното 219 = двоично 11011011 = шестнадесетично 0xDB.
- Съответствие на шестнадесетични цифри към двоични нибъли:
- 0 = 0000, 1 = 0001, 2 = 0010, 3 = 0011
- 4 = 0100, 5 = 0101, 6 = 0110, 7 = 0111
- 8 = 1000, 9 = 1001, A = 1010, B = 1011
- C = 1100, D = 1101, E = 1110, F = 1111
Как да конвертираме между системите — примери
От шестнадесетична към двоична: заменяте всяка шестнадесетична цифра с нейния 4-битов еквивалент. Пример: DB16 → D = 1101, B = 1011 → 110110112.
От десетична към шестнадесетична: делите числото на 16 и взимате остатъка; остатъкът дава последната шестнадесетична цифра. Повтаряте с частното. Пример: 21910:
- 219 ÷ 16 = 13, остатък 11 → последна цифра B
- 13 ÷ 16 = 0, остатък 13 → следваща цифра D
От шестнадесетична към десетична: умножавате всяка цифра по съответната степен на 16 и събирате. Пример: 6316 = 6·16 + 3 = 96 + 3 = 9910. (Бележка: в текстовете числото може да се записва като 63h или 0x63 — виж по-долу.)
Нотации и формати
- Често използвани префикси/суфикси: 0x63 и 63h означават шестнадесетичното число 63. Много програмни езици използват префикса 0x (например 0xFF).
- В уеб и CSS шестнадесетичните цветове се записват с "#" преди числото — например #FF0000 е чисто червено (FF за червена компонента, 00 за зелена и синя).
- Често се срещат и големи/малки букви за A–F; обозначенията са обикновено нечувствителни към регистъра (напр. 0x1a = 0x1A).
Практическо значение и приложения
В компютрите шестнадесетичната бройна система е широко използвана, защото отговаря пряко на организацията на паметта и машинните представяния:
- Памет и адреси: адресите в паметта и съдържанието на байтове често се показват в шестнадесетичен формат при дебъг и системни инструменти.
- Машинен код и асемблер: опкодовете и байтовете на машинни инструкции се записват и четат удобно в шестнадесетичен вид.
- Цветове за уеб и графика: #RRGGBB и съкратени форми като #RGB.
- Идентификатори и MAC адреси: често се форматират на шестнадесетични групи (напр. 00:1A:2B:3C:4D:5E).
- Файлови формати и хешове: много хеш-функции (MD5, SHA и др.) и хексови представяния на бинарни данни използват шестнадесетична нотация.
Допълнителни съвети
- За бързо превръщане между двоична и шестнадесетична: групирайте битовете по четворки (отдясно наляво) и заменете с подходящата шестнадесетична цифра.
- За четене на стойности: помнете, че всяка позиция е множител на степен на 16 (1, 16, 256, 4096 ...).
- За програмиране: използвайте стандартните библиотеки и формати на езика (0x... в C/Java/JavaScript, parseInt(str,16) в JavaScript и т.н.).
Обобщение: шестнадесетичната система е удобен, компактeн и тесно свързан с двоичното представяне на данни формат, който улеснява работата с байтове, памет и нисконивоен код в компютърните системи.