Основно съдържание
Компютрите и интернет
Курс: Компютрите и интернет > Раздел 1
Урок 3: Шестнайсетични числаШестнайсетични числа
Двоичните числа са чудесен начин компютрите да представят числа. Обаче не са толкова удобни за хората – толкова са дълги, че отнема известно време, за да се преброят всички 0-и и 1-ци. Когато компютърните инженери боравят с числа, те често използват или десетичната или шестнадесетичната бройна система. Да, още една бройна система!
За щастие, бройните системи имат повече прилики, отколкото разлики и сега, когато знаеш чудесно десетичната и двоичната, надяваме се, че шестнадесетичната ще ти е интуитивна.
В десетичната система всяка цифра представя степен на 10 – единиците, десетиците и т.н. Наричаме 10 основата на десетичната бройна система.
В шестнадесетичната бройна система всяка цифра представя степен на 16.
Ето как се брои до 10 шестнадесетично: 1, 2, 3, 4, 5, 6, 7, 8, 9, start text, A, end text.
Това изглежда доста познато, докато не стигнем последното "число" start text, A, end text. Знаеш ли, в шестнадесетичната система всяка цифра трябва да представя стойностите 0-15, но десетичните числа 10-15 не се побират в една цифра. За да се справи с този проблем, шестнадесетичната система използва буквите start text, A, end text-start text, F, end text, за да представи числата 10-15.
Така, нека броим от 10 до 15: start text, A, end text, start text, B, end text, start text, C, end text, start text, D, end text, start text, E, end text, start text, F, end text. Странно, но вярно!
Всъщност през годините е имало множество различни предложения за това как да се представят стойностите 10-15, но start text, A, end text-start text, F, end text е решението, което е спечелило.
А сега да преброим по-нагоре. Това е десетичното число 24, представено в шестнадесетичен вид 18:
1 | 8 |
---|---|
16 | 1 |
16, start superscript, 1, end superscript | 16, start superscript, 0, end superscript |
Това число изисква две цифри, като дясната цифра представя единиците (16, start superscript, 0, end superscript), а лявата цифра представя шестнадесетиците (16, start superscript, 1, end superscript). Също както сумирахме десетични и двоични числа, можем да сумираме и left parenthesis, 1, dot, 16, right parenthesis, plus, left parenthesis, 8, dot, 1, right parenthesis и да видим, че 18 е равно на десетичната стойност 24.
Да опитаме число, което съдържа буква. Ето го десетичното число 27, представено в шестнадесетичен вид като 1, start text, B, end text:
1 | start text, B, end text |
---|---|
16 | 1 |
16, start superscript, 1, end superscript | 16, start superscript, 0, end superscript |
За да разберем този пример, първо трябва да си спомним, че start text, B, end text представя стойността 11. Аз го правя, като броя буквите на пръсти, но ти можеш да го правиш както ти е удобно, стига да запомниш, че трябва да започнеш от start text, A, end text, представящо 10.
След това сумираме както по-рано и виждаме, че left parenthesis, 1, dot, 16, right parenthesis, plus, left parenthesis, 11, dot, 1, right parenthesis е равно на десетичната стойност 27.
Защо основа 16?
На този етап може би се чудиш какво толкова ѝ харесват на шестнадесетичната система компютърните инженери. Защо да използваме система, в която са ни нужни букви, за да представяме числа? Малко историческо отклонение ще ни покаже защо...
Ранните компютри използвали 4-битови архитектури, което означава, че те винаги са обработвали битовете в групи по 4. Това е причината все още да записваме битовете в групи по 4, както когато пишем 0111, за да представим десетичното 7, въпреки че можем да напишем само 111.
Колко стойности могат да представят 4 бита? Най-малката стойност е 0 (само нули – 0000), а най-голямата стойност е 15 (само единици – 1111), така че 4 бита могат да представят 16 уникални стойности. Аха, ето го числото 16!
Всяка група от 4 бита двоично е една цифра в шестнадесетичната система. Това прави много лесно превръщането на двоични числа в шестнадесетични числа и ги прави естествени за използване и в компютрите.
Превръщане на двоични в шестнадесетични числа
Нека докажем колко добре се разбират двоичните и шестнадесетичните числа, като превръщаме от двоични в шестнадесетични.
Ще започнем с късо двоично число:
То е дълго 4 бита, което означава, че отговаря на една шестнадесетична цифра. Има 0 на всяка позиция, с изключение на позицията на двойките, следователно е равно на десетичното число 2. И десетичната, и шестнадесетичната системи представят числата 0-9 по един и същ начин, така че 0010 е просто 2 в шестнадесетичен запис.
Да опитаме с по-дълго двоично число:
Един подход би бил да разберем какво десетично число е представено от този дълъг низ от нули и единици и след това да превърнем него в шестнадесетично. Този подход ще свърши работа, но, човече, звучи като много работа за такова число.
По-лесният подход е да превръщаме всяка група от по 4 бита наведнъж.
Започвайки с най-лявата група 1001, която е равна на left parenthesis, 1, dot, 8, right parenthesis, plus, left parenthesis, 1, dot, 1, right parenthesis, десетичното число 9. Това число е по-малко от 10, така че 1001 е просто 9 шестнадесетично.
Следващата група е 1010, или left parenthesis, 1, dot, 8, right parenthesis, plus, left parenthesis, 1, dot, 2, right parenthesis, десетичната стойност 10. Това число изисква буквено представяне в шестнадесетичен вид – start text, A, end text.
Следващата група е 0110, или left parenthesis, 1, dot, 4, right parenthesis, plus, left parenthesis, 1, dot, 2, right parenthesis, десетичната стойност 6. Това число е същото в шестнадесетичен вид – 6.
Последната група е 1100, или left parenthesis, 1, dot, 8, right parenthesis, plus, left parenthesis, 1, dot, 4, right parenthesis, деесетичната стойност 12. Tова число изисква буквено представяне в шестнадесетичен вид – start text, C, end text.
Крайният ни шестнадесетичен резултат е 9, start text, A, end text, 6, start text, C, end text. Направихме това преобразуване без да знаем кое десетично число е представено. Сега ще разкрия и двете 1001101001101100 и 9, start text, A, end text, 6, start text, C, end text са равни на десетичното число 39, space, 532. Това е ужасно голямо число – радвам се, че го превърнахме цифра по цифра.
Модели в шестнадесетичните числа
Хайде да придобием малко интуиция за шестнадесетичната бройна система.
Първо: какво е най-голямото число за даден брой цифри? В десетичната система това са само деветки, като 9999. В двоичната система това са само единици, като 1111.
В този случай в шестнадесетичната система всяка цифра е start text, F, end text – start text, F, F, F, F, end text. Когато видим такова число знаем, че то представя най-голямата възможна стойност за този брой цифри. За да представим което и да било по-голямо число, ще ни трябват повече цифри.
Добре, колко представя голямо число като това? Можем да използваме същото правило, както при двоичната система – най-голямото число, което може да се представи с даден брой цифри n, е същото, като 16, start superscript, n, end superscript, minus, 1. Сега, след като работим с основа 16, вместо основа 2, може да ни се наложи да използваме калкулатор, за да се справим.
Тук имаме таблица с първите 4 големи стойности:
Цифри | Най-голямо шестнадесетично | Десетична равностойност |
---|---|---|
1 | start text, F, end text | 15, left parenthesis, 16, start superscript, 1, end superscript, minus, 1, right parenthesis |
2 | start text, F, F, end text | 255, left parenthesis, 16, squared, minus, 1, right parenthesis |
3 | start text, F, F, F, end text | 4095, left parenthesis, 16, cubed, minus, 1, right parenthesis |
4 | start text, F, F, F, F, end text | 65535, left parenthesis, 16, start superscript, 4, end superscript, minus, 1, right parenthesis |
Приложение на шестнадесетичната бройна система
В този раздел за принципите на работа на компютрите ще се занимаваме предимно с двоични числа. Важно е обаче да разбираш и шестнадесетичните, тъй като те ще се появяват в следващите раздели, а и като цяло в ежедневието на програмистите.
Един пример от моя опит – разработчиците на сайтове използват шестнадесетични числа, за да представят цветовете. Описваме цветовете като комбинация от три съставки: червено, зелено и синьо. Всяка от тези съставки може да се променя между 0 и 255. Синият цвят може да се запише така
rgb(0, 0, 255)
или с по-съкратената шестнадесетична версия, #0000FF
. Използвайки тази нотация, можем да опишем 16, start superscript, 6, end superscript уникални цвята — повече от 16 милиона цвята!Сега, след като се запозна с шестнадесетичните числа, отваряй си очите за тях. Често ще ги виждаш записани с
0x
пред тях, като 0x4F
или можеш да разпознаеш отличителната им смесица от 0-9
с A-F
. Ако забележиш интересно тяхно приложение в ежедневието, сподели откритието си по-долу в секцията "Съвети и благодарности".🙋🏽🙋🏻♀️🙋🏿♂️Имаш ли въпроси по темата? Ще се радваме да ти отговорим, просто задай въпросите си по-долу!
Искаш ли да се присъединиш към разговора?
Все още няма публикации.