Шестнадесетична бройна система — понятие, примери и роля в компютрите
Научете как работи шестнадесетичната бройна система, преобразувания, примери и ролята ѝ в компютрите — удобен начин за четене и представяне на двоични данни.
Шестнадесетичната бройна система, често съкращавана до "шестнадесетична", е бройна система, съставена от 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н и тесно свързан с двоичното представяне на данни формат, който улеснява работата с байтове, памет и нисконивоен код в компютърните системи.
История
За разлика от съвременните компютри, много ранни компютри са имали шестбитови байтове. Програмистите на тези системи обикновено използваха алтернативна схема за групиране на битовете, наречена осмична. Всяка осмична цифра ефективно представлява три бита, а шестбитов байт може да бъде представен като две осмични цифри. Три бита, всеки от които е включен или изключен, могат да представят осемте числа от 0 до 7: 000 = 0; 001 = 1; 010 = 2; 011 = 3; 100 = 4; 101 = 5; 110 = 6 и 111 = 7.
Шестнадесетични стойности
Шестнадесетичната бройна система е подобна на осмичната бройна система (основа 8), тъй като всяка от тях може лесно да се сравни с двоичната бройна система. Шестнадесетичната система използва четирибитово двоично кодиране. Това означава, че всяка цифра в шестнадесетичната система е същата като четири цифри в двоичната система. Окталната система използва трибитова двоична система.
В десетичната система първата цифра е мястото на единицата, следващата цифра вляво е мястото на десетката, следващата е мястото на стотицата и т.н. В шестнадесетичната система всяка цифра може да има 16 стойности, а не 10. Това означава, че цифрите имат място на единицата, място на шестнайсетицата, а следващата е място на 256. Така че 1h = 1 в десетична бройна система, 10h = 16 в десетична бройна система, а 100h = 256 в десетична бройна система.
Примерни стойности на шестнадесетични числа, преобразувани в двоична, осмична и десетична бройна система.
|
Преобразуване
Превръщане на двоична в шестнадесетична система
Промяната на числото от двоично в шестнадесетично използва метод за групиране. Двоичното число се разделя на групи от по четири цифри, като се започва отдясно. След това тези групи се преобразуват в шестнадесетични цифри, както е показано в таблицата по-горе за шестнадесетичните числа от 0 до F. За да се промени от шестнадесетична система, се прави обратното. Всяка от шестнайсетичните цифри се превръща в двоична и групирането обикновено се премахва.
| Двоичен | Групировки | Hex | |||
| 01100101 | 0110 | 0101 | 65 | ||
| 010010110110 | 0100 | 1011 | 0110 | 4B6 | |
| 1101011101011010 | 1101 | 0111 | 0101 | 1010 | D75A |
Когато броят на битовете в двоичното число не е кратен на 4, той се допълва с нули, за да стане такъв. Примери:
- двоичен 110 = 0110, което е 6 Hex.
- двоичен код 010010 = 00010010, което е 12 Hex.
Превръщане на шестнадесетично в десетично число
За преобразуване на дадено число от шестнадесетична в десетична система има два общи начина.
Първият метод е по-често прилаган при ръчно конвертиране:
- Използвайте десетичната стойност за всяка шестнадесетична цифра. За 0-9 тя е същата, но A = 10, B = 11, C = 12, D = 13, E = 14 и F = 15.
- Съхранявайте сбора на числата, преобразувани на всяка стъпка по-долу.
- Започнете с най-малката шестнадесетична цифра. Това е цифрата в десния край. Това ще бъде първият елемент в сумата.
- Вземете втората най-малка цифра. Тя е до цифрата в десния край. Умножете десетичната стойност на цифрата по 16. Добавете това към сумата.
- Направете същото и за третата най-малка цифра, но я умножете по 162 (т.е. 16 на квадрат или 256). Добавете я към сумата.
- Продължете за всяка цифра, като умножавате всяко място с друга степен на 16. (4096, 65536 и т.н.)
|
| Местоположение | |||||
| 6 | 5 | 4 | 3 | 2 | 1 | |
| Стойност | 1048576 (16 )5 | 65536 (16 )4 | 4096 (16 )3 | 256 (16 )2 | 16 (16 )1 | 1 (16 )0 |
Следващият метод се прилага по-често при преобразуване на число в софтуер. Не е необходимо да се знае колко цифри има числото, преди да започне, и никога не се умножава по повече от 16, но на хартия изглежда по-дълъг.
- Използвайте десетичната стойност за всяка шестнадесетична цифра. За 0-9 тя е същата, но A = 10, B = 11, C = 12, D = 13, E = 14 и F = 15.
- Съхранявайте сбора на числата, преобразувани на всяка стъпка по-долу.
- Започнете с най-значимата цифра (цифрата вляво). Това е първият елемент в сумата.
- Ако има друга цифра, умножете сумата по 16 и добавете десетичната стойност на следващата цифра.
- Повтаряйте горната стъпка, докато няма повече цифри.
Пример: 5Fh и 3425h в десетична бройна система, метод 1
|
|
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||
Пример: 5Fh и 3425h в десетична бройна система, метод 2
|
|
|
|
| |||||||||||||||||||||||||||||||||||||||||
Свързани страници
- Двоична бройна система
- Октална бройна система
- Десетична бройна система
Въпроси и отговори
В: Какво представлява шестнадесетичната бройна система?
О: Шестнадесетичната бройна система е бройна система с основа 16, съставена от 16 символа.
В: Кои са десетте символа, използвани в десетичната бройна система (основа 10)?
О: Десетте символа, използвани в десетичната бройна система (основа 10), са 0,1,2,3,4,5,6,7,8 и 9.
В: Какви шест допълнителни символа използва шестнадесетичната система?
О: Шестнадесетичната система използва букви от английската азбука - A, B, C, D, E и F.
В: Колко бита съдържа един байт в съвременните компютри?
О: При съвременните компютри всеки байт обикновено съдържа осем бита.
В: Какво наричат инженерите и компютърните специалисти четирибитови стойности?
О.: Инженерите и компютърните специалисти наричат четирибитовите стойности "нибъл" (понякога се изписва "нибъл").
В: Как можете да избегнете объркване с други системи за номериране, когато записвате шестнадесетични числа?
О: За да избегнете объркване с други системи за номериране, когато пишете шестнадесетични числа, можете да добавите "h" след или "0x" преди числото. Например 63h или 0x63 означава 63 в шестнадесетична бройна система.
обискирам