Шестнадесетичната бройна система, често съкращавана до "шестнадесетична", е бройна система, съставена от 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:

  1. 219 ÷ 16 = 13, остатък 11 → последна цифра B
  2. 13 ÷ 16 = 0, остатък 13 → следваща цифра D
Резултат: 21910 = DB16.

От шестнадесетична към десетична: умножавате всяка цифра по съответната степен на 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н и тесно свързан с двоичното представяне на данни формат, който улеснява работата с байтове, памет и нисконивоен код в компютърните системи.