Разлика между версии на „Шестнайсетична бройна система“

Грешки в статичния код: Грешно разположено съдържание; форматиране: 13x кавички, 7x тире, 4x тире-числа, URL (ползвайки Advisor)
(Грешки в статичния код: Грешно разположено съдържание; форматиране: 13x кавички, 7x тире, 4x тире-числа, URL (ползвайки Advisor))
'''Шестнайсетичната бройна система''' е [[Бройна система#Позиционни бройни системи|позиционна бройна система]], с [[Основа на бройна система|основа]] 16, в която числата се представят с помощта на 16 динамични символа. Символите от '''0- – 9''' са представени чрез [[арабски цифри]], а латинските букви '''A, B, C, D, E, F (или a-f)''' се ползват за стойностите от 10 до 15. Всяка шестнайсетична цифра се представя като група от четири двоични цифри ([[бит]]). Причина за това е, че за съхраняването на данните в оперативната памет на електронноизчислителни машини се използва [[двоичен код]].
 
== Представяне ==
=== Писмено представяне ===
==== Използване на 0–90 – 9 и A–FA – F ====
<table border="0" cellspacing="0" cellpadding="0" class="infobox" style="text-align: center; border: 2px">
<tr style="background:black; height:2px"><td colspan="12" style="background:black; width:2px"></td></tr>
<td style="background:black; width:2px"></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>ca
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr style="background:#c0c0ff; color:black; height:24px">
<td style="background:black; width:2px"></td>
<td style="background:black; width:2px"></td>
</tr>
<tr style="background:black; height:2px"><td colspan="12" style="background:black; width:2px"></td></tr>
<td style="background:black; width:2px"></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr style="background:white; color:black; height:24px">
<td style="background:black; width:2px"></td>
<td style="background:black; width:2px"></td>
</tr>
<tr style="background:black; height:2px"><td colspan="12" style="background:black; width:2px"></td></tr>
<td style="background:black; width:2px"></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr style="background:white; color:black; height:24px">
<td style="background:black; width:2px"></td>
<td style="background:black; width:2px"></td>
</tr>
<tr style="background:black; height:2px"><td colspan="12" style="background:black; width:2px"></td></tr>
<td style="background:black; width:2px"></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr style="background:#e1e1ff; color:black; height:24px">
<td style="background:black; width:2px"></td>
<td style="background:black; width:2px"></td>
</tr>
<tr style="background:black; height:2px"><td colspan="12" style="background:black; width:2px"></td></tr>
<td style="background:black; width:2px"></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
 
За да не се обърква представянето на символите в различните бройни системи се използват няколко установени практики. Една от тях е при изписването на знаците да се слага долен индекс, който показва основата на бройната система. Например 119<sub>10</sub> в десетична и е равно на 77<sub>16</sub> в шестнайсетична. Други предпочитат индекса да е текстов 119<sub>decimal</sub> или 119<sub>d</sub> - – десетична, 77<sub>hex</sub> или 77<sub>h</sub>– шестнайсетична. Изписването на отрицателни числа става по същият начин както и в десетична бройна система с "-".
 
При разработката на софтуер са разработи различни методи за представянето на шестнайсетичните символи:
* В URIs (както и в [[URL]]s), низ от символи написан като шестнайсетична двойка се изписва с „%“: <code><nowiki>http://www.example.com/name%20with%20spaces</nowiki></code>, където %20 е празното място между знаците (стойности 20<sub>16</sub> и 32<sub>10</sub>).
* В [[XML]] и [[XHTML]] знаците могат да бъдат изразени с аритметични код като „&#xcode“, където „code“ e 1- – 6 цифрено шестнайсетично число добавено към символ от [Уникод|Unicode]. Вследствие &#x007А е еквивалент на „z“([[Уникод|Unicode]] стойност 007А, десетична 122)
*Цветовата гама в [[HTML]], [[CSS]] и X Windows могат да бъдат изразени с шест цифрен шестнайсетичен код (по две за червено, зелено и синьо, подредени в този ред) предхождан с #: бялото се възпроизвежда с #FFFFFF. В [CSS] това може да се представи и с 3 знака #FFF(бяло)
* В програмни езици като [[C++]], [[C Sharp|C#]], [[Java]], [[JavaScript]], [[Python]] и Windows PowerShell се пише 0x пред шестнайсетичното число:0xA12. Символи или символни низове могат да се представят с \x последвани от два шестнайсетични символа:\x1B.а
* Други езици като [[Паскал (език)|Pascal]], [[Delphi]], някои версии на [[BASIC]] ( Commodore ), GML и [[Forth]] използвате $ като префикс: $ 5A3.ac
* В [http://bg.wikipedia.org/wiki/%D0%A3%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4 [Уникод|Unicode]] стандарт, символна стойност се представя с U + следвана от шестнайсетичен стойност: U +03B1 - – гръцката буква алфа (α).
* Всички [[IPv6]] адреси могат да бъдат записани като осем групи от по четири шестнайсетични цифри, където всяка група е отделена от двоеточие ( : ). Валиден [[IPv6]] адрес: 2001:0 db8: 85a3: 0000:0000:8 A2E: 0370:7334
 
=== Ранните писмени представяния ===
Изборът на буквите от А - – F да заместят цифрите от 10- – 15 не е универсален в ранната история на компютрите.
* Bendix G-15 компютри са използвали буквите U - – Z вместо А - – F.
* The Librascope LGP-30 използва букви F, G, J, K, Q и W.
 
== Ранно използване на шестнайсетична бройна система в компютъра ==
[[Двоична бройна система|Двоичната бройна система]] е много добра за [[Компютър|компютрите]], но има малък недостатък – броят на цифрите расте неимоверно бързо. Както се оказва, има и друга бройна схема, която също е благоприятна за компютрите: '''шестнайсетичната'''. Преди години, когато компютърът е бил все още съвсем ново откритие, хората, които го проектирали осъзнали, че трябва да се създаде '''стандарт''' за съхранение на информация. Тъй като компютрите могат да смятат само с двоични числа - – '''букви, текст''' и други символи трябвало да бъдат съхранени като числа. Но притеснението им не е било само това. Те трябвало да се уверят, че числото, което, представя примерно ‘А’, ще бъде едно и също на всички компютри. За да се улесни това се създала [[ASCII]] (от Английски език – '''American Standard Code for Information Interchange''') таблицата. В нея има невидими символи, които изпълняват определи функции, като отместване на указателя (09), звън (07). Могат да се използват различни комбинации на само осем двоични цифри, или битове, за да се представи всеки символ на ASCII графиката.
'''128 знака''' можели да изглеждат много, но не след дълго разработчиците забелязали липсата на много от специалните гласни, използвани от '''[[Латински език|латинския език]]''', различни от [[Английски език|английския език]] като например: ä, é, û и Æ. Също липсвали и математически символи (±, µ, °, ¼) и знаци за парични валути, различни от ($) като (£, ¥, ¢). За да се компенсира тази липса, '''ASCII''' таблицата била разширена от '''128''' на '''256''' символа.
 
Имаме числото 428591. Всяка цифра се разделя на 16 и се взима нейният остатък. Полученото от делението число делим отново на 16, дотогава докато се получи 0 за резултат. Получените от остатъка числа се вземат отзад напред (от последното деление до първото) и се получава числото в шестнайсетична бройна система.
 
{| borderstyle="0text-align:right"
|-
|428591
|<center>÷</center>
|16
|=
|<center><nowiki>=</nowiki></center>
|26786
|остатък
|-
|26786
|<center>÷</center>
|16
|=
|<center><nowiki>=</nowiki></center>
|1674
|остатък
|-
|1674
|<center>÷</center>
|16
|=
|<center><nowiki>=</nowiki></center>
|104
|остатък
|-
|104
|<center>÷</center>
|16
|=
|<center><nowiki>=</nowiki></center>
|6
|остатък
|-
|6
|<center>÷</center>
|16
|=
|<center><nowiki>=</nowiki></center>
|0
|остатък
Това е C# имплементация на горния алгоритъм
 
<bigdiv style="font-size:larger"><source lang="csharp">
 
static string baseToHex(int dec)
return sb.ToString();
}
</source></bigdiv>
 
=== От Шестнайсетична в Десетична ===
Имаме числото 68A2F<sub>(16)</sub>. Взимат се цифрите отзад напред, всяка се умножава с 16<sup>[0..n]</sup>. Резултатът се събира.
 
{| borderstyle="0text-align:right"
|-
|F || * ||16<sup>0</sup> || = ||15 || * ||1 || = ||15
 
Това е C# имплементация на горния алгоритъм
<bigdiv style="font-size:larger"><source lang="csharp">
 
static int hexToBase(string hex)
return dec;
}
</source></bigdiv>
 
=== Инструменти за превръщане на бройни системи ===
* https://www.google.com/
:Може да се използва директно в търсачката като синтаксисът е следният:
При двоична -> 0b111
 
Като ''0b'' винаги стои пред числото, за което се търси.
 
При шестнайсетична -> 0x23A1F
 
Като ''0x'' винаги стои пред числото, за което се търси.
 
При осмична -> 0o40
 
Като ''0o'' винаги стои пред числото, за което се търси.
== Култура ==
=== Етимология ===
Думата '''хексадесимал''' е съставена от '''хекса-''' (от [[Гръцки език]] – „шест”„шест“) и '''–десимал''' (от [[Латински език]] – „десет”„десет“). За първи път думата хексадесимал, заместваща ранната латинска интерпретация - – '''сексадесимал''', се появява през 1954 година. Думата шестдесетичен (за '''[[шестдесетична бройна система]]''') запазва латинското си название „'''сексагесимал'''. Доналд Кнут е посочил, че правилният термин е „'''сенидъри'''(от Английски – „senidery”„senidery“) за латинското наименование – „групирани по 16”16“. Алфред Б. Тейлър е използвал „сенидъри”„сенидъри“ в средата на 18 век в неговата документация за алтернативни бройни системи, въпреки че той отхвърля използването на шестнайсетична бройна система заради „неудобния брой цифри”цифри“. Шварцман отбелязва, че шестнайсетичната бройна система трябва да носи наименуванието си от Латински, а именно – „сексадесимал”„сексадесимал“. Но неговите опасения са, че компютърните хакери биха съкратили думата просто на „секс”„секс“. Етимологическото правилно гръцко понятие би било „'''хексадъкейдик''' (въпреки че в съвременния гръцки език е по-разпространено „'''дека-хексадик''').
 
=== Използване в китайската култура ===