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

Изтрито е съдържание Добавено е съдържание
Userings (беседа | приноси)
м препр. формат
мРедакция без резюме
Ред 1:
{{обработка|форматиране}}
 
'''Шестнадесетичната бройна система''' е [[позиционна бройна система]], в която числата се представят с помощта на 16 динамични символа. Символите от '''0-9''' са представени чрез [[арабски цифри]], а латинските букви '''A, B, C, D, E, F (или a-f)''' взимат стойностите от 10-15. Всяка шестнадесетична цифра се представя като група от четири двоични цифри ([[бит]]). Причина за това е, че за съхраняването на данните в оперативната памет на електронноизчислителни машини се използва двоичен код.
 
== Представяне ==
=== Писмено представяне ===
==== Използване на 0–9 и A–F ====
<table border="0" cellspacing="0" cellpadding="0" class="infobox" style="text-align: center; border: 2px">
<tr style="background:black; height:2px">
Ред 302:
</tr>
</table>
 
За да не се обърква представянето на символите в различните бройни системи се използват няколко установени практики. Една от тях е при изписването на знаците да се слага [http://bg.wikipedia.org/wiki/%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:%D0%98%D0%BD%D0%B4%D0%B5%D0%BA%D1%81%D0%B8 долен индекс], който показва основата на бройната система. Например 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>).
Line 312 ⟶ 314:
* Всички [[IPv6]] адреси могат да бъдат записани като осем групи от по четири шестнадесетични цифри, където всяка група е отделена от двоеточие ( : ).Валиден [[IPv6]] адрес: 2001:0 db8: 85a3: 0000:0000:8 A2E: 0370:7334
 
=== Ранните писмени представяния ===
Изборът на буквите от А - F да заместят цифрите от 10-15 не е универсален в ранната история на компютрите.
*Bendix G-15 компютри са използвали буквите U - Z вместо А - F.
Line 320 ⟶ 322:
[[Двоична бройна система|Двоичната бройна система]] е много добра за [[Компютър|компютрите]], но има малък недостатък – броят на цифрите расте неимоверно бързо. Както се оказва, има и друга бройна схема, която също е благоприятна за компютрите: '''шестнадесетичната'''. Преди години, когато компютърът е бил все още съвсем ново откритие, хората, които го проектирали осъзнали, че трябва да се създаде '''стандарт''' за съхранение на информация. Тъй като компютрите могат да смятат само с двоични числа - '''букви, текст''' и други символи трябвало да бъдат съхранени като числа. Но притеснението им не е било само това. Те трябвало да се уверят, че числото, което, представя примерно ‘А’, ще бъде едно и също на всички компютри. За да се улесни това се създала [[ASCII]] (от Английски език – '''American Standard Code for Information Interchange''') таблицата. В нея има невидими символи, които изпълняват определи функции, като отместване на указателя (09), звън (07). Могат да се използват различни комбинации на само осем двоични цифри, или битове, за да се представи всеки символ на ASCII графиката.
'''128 знака''' можели да изглеждат много, но не след дълго разработчиците забелязали липсата на много от специалните гласни, използвани от '''[[Латински език|латинския език]]''', различни от [[Английски език|английския език]] като например: ä, é, û и Æ. Също липсвали и математически символи (±, µ, °, ¼) и знаци за парични валути, различни от ($) като (£, ¥, ¢). За да се компенсира тази липса, '''ASCII''' таблицата била разширена от '''128''' на '''256''' символа.
 
Стойността на 256 може да бъде представена като шестнадесет на втора степен, което ни връща към '''шестнадесетична бройна система'''. Оказва се, че всеки символ на ASCII таблицата може да се представи чрез двуцифрено число в шестнадесетична бройна система – от 00 до FF.
 
== Преобразуване ==
Човек е свикнал да работи в десетична бройна система, но компютрите работят в двоична бройна система ( съставена само от 0-ли и 1-ци ). Целта на шестнадесетичната бройна система е да помогне на хората, когато работят с големи числа.
 
Line 362 ⟶ 365:
|}
 
=== От Двоична в Шестнадесетична ===
Ако искаме да сметнем числото 1101000101000101111 <sub>(2)</sub> до число с база <sub>(16)</sub>, първо се разделя двоичното число на групи от по четири:
 
Line 381 ⟶ 384:
Когато се съберат се получава, че 1101000101000101111 <sub>(2)</sub> = 68A2F<sub>(16)</sub>.
 
=== От Шестнадесетична в Двоична ===
Числото 68A2F<sub>(16)</sub> в двоична бройна система:
 
Line 396 ⟶ 399:
Когато се съберат се получава, че = 68A2F<sub>(16)</sub> = 1101000101000101111 <sub>(2)</sub>.
 
=== От Десетична в Шестнадесетична ===
Имаме числото 428591. Всяка цифра се разделя на 16 и се взима нейният остатък. Полученото от делението число делим отново на 16, дотогава докато се получи 0 за резултат. Получените от остатъка числа се вземат отзад напред ( от последното деление до първото ) и се получава числото в шестнадесетична бройна система.
 
{| border="0"
|-
|428591
|
|<center><nowiki>=</nowiki>÷</center>
428591
|16
|<center>÷<nowiki>=</nowiki></center>
|26786
|
|остатък
16
|15
<center><nowiki>=</nowiki></center>
|
26786
|
остатък
|
15
|-
|26786
|
|<center><nowiki>=</nowiki>÷</center>
26786
|16
|<center>÷<nowiki>=</nowiki></center>
|1674
|
|остатък
16
|2
<center><nowiki>=</nowiki></center>
|
1674
|
остатък
|
2
|-
|1674
|
|<center><nowiki>=</nowiki>÷</center>
1674
|16
|<center>÷<nowiki>=</nowiki></center>
|104
|остатък
16
|10
<center><nowiki>=</nowiki></center>
|
104
|
остатък
|
10
|-
|104
|<center><nowiki>=</nowiki>÷</center>
104
|16
|<center>÷<nowiki>=</nowiki></center>
|6
|остатък
16
|8
<center><nowiki>=</nowiki></center>
|
6
|
остатък
|
8
|-
|6
|<center><nowiki>=</nowiki>÷</center>
6
|16
|<center>÷<nowiki>=</nowiki></center>
|0
|остатък
16
|6
<center><nowiki>=</nowiki></center>
|
0
|
остатък
|
6
|}
 
Line 480 ⟶ 448:
 
Това е C# имплементация на горния алгоритъм
 
 
<big><source lang="csharp">
Line 497 ⟶ 464:
</source></big>
 
=== От Шестнадесетична в Десетична ===
Имаме числото 68A2F<sub>(16)</sub>. Взимат се цифрите отзад напред, всяка се умножава с 16<sup>[0..n]</sup>. Резултатът се събира.
 
Line 644 ⟶ 611:
|}
 
== Култура ==
=== Етимология ===
Думата '''хескадесимал''' е съставена от '''хекса-''' (от [[Гръцки език]] – „шест”) и '''–десимал''' (от [[Латински език]] – „десет”). За първи път думата хексадесимал, заместваща ранната латинска интерпретация - '''сексадесимал''', се появява през 1954 година. Думата шестдесетичен (за '''шестдесетична бройна система''') запазва латинското си название „'''сексагесимал'''”. Доналд Кнут е посочил, че правилният термин е „'''сенидъри'''”(от Английски – „senidery”) за латинското наименувание – „групирани по 16”. Алфред Б. Тейлър е използвал „сенидъри” в средата на 18 век в неговата документация за алтернативни бройни системи, въпреки че той отхвърля използването на шестнадесетична бройна система заради „неудобния брой цифри”. Шварцман отбелязва, че шестнадесетичната бройна система трябва да носи наименуванието си от Латински, а именно – „сексадесимал”. Но неговите опасения са, че компютърните хакери биха съкратили думата просто на „секс”. Етимологическото правилно гръцко понятие би било „'''хексадъкейдик'''” (въпреки че в съвременния гръцки език е по-разпространено „'''дека-хексадик'''”).
 
=== Използване в китайската култура ===
Традиционните китайски единици за тегло са в шестнадесетична бройна система. Например, един джин в старата система се равнява на шестнадесет таела. Китайското сметало може да се използва за извършване на шестнадесетични изчисления.
 
== Основни абревиатури ==
{| class="wikitable"
|-
Line 663 ⟶ 630:
|-
| Шестнадесетична ({{lang-en|hexadecimal}}) || hex || 16
|-
|}
 
== Източници ==
не преписвайте
* http://www.codemastershawn.com/library/tutorial/hex.bin.numbers.php
* http://www.learning-about-computers.com/tutorials/binary_and_hexidecimal.shtml