Відмінності між версіями «Шістнадцяткова система числення»

доповнення з https://en.wikipedia.org/w/index.php?title=Hexadecimal&oldid=665833719, правопис
(доповнення з https://en.wikipedia.org/w/index.php?title=Hexadecimal&oldid=665833719, правопис)
'''Шістнадцяткова систе́ма чи́слення''' — це позиційна [[система числення]], з [[Основа системи числення|основою]] 16. Тобто кожне число в якійній записується за допомогою 16-ти символів. ЦюАрабські системуцифри часто називають такожвід '''[[Hex]]'0'' (початкові літери {{lang-en|hexadecimal}} — шіснадцятковий). Спочатку планувалось вживати латинськедо ''sexa9'' замістьвідповідають ''hexa'',значенням проте це слово сприймалось неоднозначно. Для запису чисел в цій системі окрім 10 арабських цифр (від ''0''нуля до дев''9'')яти, використовуютьа 6 літер [[латинська абетка|латинської абетки]]: ''A'', ''B'', ''C'', ''D'', ''E'', ''F'' відповідають значенням від десяти до п'ятнадцяти. Шістнадцяткова система числення широко використовується розробниками комп'ютерів та програмістами.
 
Цю систему часто називають також '''[[Hex]]''' (початкові літери {{lang-en|hexadecimal}} — шістнадцятковий).
 
Декілька різних позначень використовуються для позначення шістнадцяткових констант в комп'ютерних мовах. Префікс «0x» широко поширений через його використання в Unix і C (і пов'язаних з ними операційних систем і мов). Крім того, деякі автори позначають шістнадцяткові значення, використовуючи суфікс чи індекс. Наприклад, можна було б написати 0x2AF3 або 2AF3<sub>16</sub>, залежно від вибору способу позначень.
 
Як приклад, для шістнадцяткового числа 2AF3<sub>16</sub> знайдемо відповідне число в [[Десяткова система числення|десятковій системі числення]]. Зауважимо, що 2AF3<sub>16</sub> дорівнює сумі (2000<sub>16</sub> + A00<sub>16</sub> + F0<sub>16</sub> + 3<sub>16</sub>), якщо розкласти число на послідовність [[Позиційні системи числення|позиційних значень]] елементів числа, то перетворення кожного елемента в десяткове значення, можна описати так: {{math|(2<sub>16</sub> × 16<sup>3</sup>) + (A<sub>16</sub> × 16<sup>2</sup>) + (F<sub>16</sub> × 16<sup>1</sup>) + (3<sub>16</sub> × 16<sup>0</sup>)}} =<br/>{{math|(2 × 4096) + (10 × 256) + (15 × 16) + (3 × 1)}} = 10995.
 
Кожна шістнадцяткова цифра представляється чотирма бінарними цифрами (бітами), і основне застосування шістнадцяткового запису&nbsp;— це зручний запис [[двійковий код |двійкового]] коду. Одна шістнадцяткова цифра є [[нібл]]ом, який є половиною з [[Октет (інформатика)|октету]] або байту (8 біт). Наприклад, значення [[байт]] лежить в діапазоні від 0 до 255 (в десяткових числах), але може бути більш зручно представити у вигляді двох шістнадцятирічних цифр в діапазоні від 00 до FF. Шістнадцяткова система також широко використовується для представлення [[Способи адресації пам'яті|адресації пам'яті]] комп'ютера.
 
== Використання ==
Дуже часто використовується у низькрівневомунизькорівневому програмуванні та комп'ютерній документціідокументації, оскільки в сучасних комп'ютерах мінімальною одиницеяодиницею пам'яті є 8-бітний [[байт]], значення якого зручно записувати двома шістнадцятковими цифрами. Таке використання почалося з системи [[IBM/360]], де вся документація використовувала саме таку систему числення, у той час коли в документації інших комп'ютерних системах того часу (навіть 8-бітними символами, як, наприклад, [[PDP-11]] або [[БЕСМ-6]]) використовували [[вісімкова система числення|вісімкову систему числення]].
 
В стандарті [[Юнікод]]а номер символу прийнято записувати в шістнадцятковому виді, використовуючи не менш 4 цифр (за необхідності -&nbsp;— з [[провідні нулі| прoвіднимипровідними нулями]]).
 
== Переклад чисел з одної системи числення в іншу ==
 
=== Переклад чисел з шістнадцяткової системи в десяткову ===
Для перекладу шістнадцяткового числа в десяткове необхідно це число представити у вигляді суми добутків ступенейступенів основи шістнадцяткової системи числення на відповідні цифри в разрядахрозрядах шістнадцяткового числа.
 
Наприклад, треба перевести шістадцятковешістнадцяткове число '''5A3''' в десяткове. В цьому числі 3 цифри. У відповідності з наданим правилом представимо його у вигляді суми ступенейступенів з основою 16:
 
<center>'''5A3<sub>16</sub> = 3·16<sup>0</sup>+10·16<sup>1</sup>+5·16<sup>2</sup>=<br /> = 3·1+10·16+5·256 = 3+160+1280 = 1443<sub>10</sub>'''</center>
 
=== Переклад чисел із двійкової системи в шістнадцяткову та навпаки ===
Для перекладу многозначногобагатозначного числа в шістнадцяткову систему треба розбити його на [[ніббл| тетради]] справа наліво та замінити кожну тетраду відповідною шістнадцятковою цифрою. Для перекладу числа з шістнадцяткової системи в двійкову треба замінит замінити кожну його цифру на відповідну тетраду з приведеної нижче таблиці перекладу.
 
Наприклад:
| style="background:black; width:2px" | || || || || || || || || || || ||
|-style="background:#FDC888; color:black; height:24px"
| style="background:black; width:2px" | || style="width:45px"|'''0'''<sub>hex</sub> || = || style="width:45px"|0<sub>dec</sub> || = || style="width:45px"|0<sub>oct</sub> ||style="background:black; width:2px" | || style="background: white;width:24px"|0|| style="background: white;width:24px"|0|| style="background: white;width:24px"|0|| style="background: white;width:24px"|0 ||style="background: black; width:2px" |
|-style="background:#E3EDE9; color:black; height:24px"
| style="background:black; width:2px" | || '''1'''<sub>hex</sub> || = || 1<sub>dec</sub> || = || 1<sub>oct</sub> ||style="background:black; width:2px" | || style="background: white;width:24px"|0|| style="background: white;width:24px"|0|| style="background: white;width:24px"|0|| style="background: red;width:24px"|1||style="background: black; width:2px" |
|-style="background:#E3EDE9; color:black; height:24px"
| style="background:black; width:2px" | || '''2'''<sub>hex</sub> || = || 2<sub>dec</sub> ||= || 2<sub>oct</sub> ||style="background:black; width:2px" | || style="background: white;width:24px"|0|| style="background: white;width:24px"|0|| style="background: red;width:24px"|1|| style="background: white;width:24px"|0||style="background: black; width:2px" |
|-style="background:#FDC888; color:black; height:24px"
| style="background:black; width:2px" | || '''3'''<sub>hex</sub> || = || 3<sub>dec</sub> || = || 3<sub>oct</sub> ||style="background:black; width:2px" | || style="background: white;width:24px"|0|| style="background: white;width:24px"|0|| style="background: red;width:24px"|1|| style="background: red;width:24px"|1||style="background: black; width:2px" |
|- style="background:black; height:2px"
| style="background:black; width:2px" | || || || || || || || || || || ||
|-style="background:#E3EDE9; color:black; height:24px"
| style="background:black; width:2px" | || '''4'''<sub>hex</sub> || = || 4<sub>dec</sub> ||= || 4<sub>oct</sub> ||style="background:black; width:2px" | || style="background: white;width:24px"|0|| style="background: red;width:24px"|1|| style="background: white;width:24px"|0|| style="background: white;width:24px"|0||style="background: black; width:2px" |
|-style="background:#FDC888; color:black; height:24px"
| style="background:black; width:2px" | || '''5'''<sub>hex</sub> || = || 5<sub>dec</sub> || = || 5<sub>oct</sub> ||style="background:black; width:2px" | || style="background: white;width:24px"|0|| style="background: red;width:24px"|1|| style="background: white;width:24px"|0|| style="background: red;width:24px"|1||style="background: black; width:2px" |
|-style="background:#FEE978; color:black; height:24px"
| style="background:black; width:2px" | || '''6'''<sub>hex</sub> || = || 6<sub>dec</sub> ||= || 6<sub>oct</sub> ||style="background:black; width:2px" | || style="background: white;width:24px"|0|| style="background: red;width:24px"|1|| style="background: red;width:24px"|1|| style="background: white;width:24px"|0||style="background: black; width:2px" |
|-style="background:#E3EDE9; color:black; height:24px"
| style="background:black; width:2px" | ||'''7'''<sub>hex</sub> || = || 7<sub>dec</sub> || = || 7<sub>oct</sub> ||style="background:black; width:2px" | || style="background: white;width:24px"|0|| style="background: red;width:24px"|1|| style="background: red;width:24px"|1|| style="background: red;width:24px"|1||style="background: black; width:2px" |
|- style="background:black; height:2px"
| style="background:black; width:2px" | || || || || || || || || || || ||
|-style="background:#E3EDE9; color:black; height:24px"
| style="background:black; width:2px" | || '''8'''<sub>hex</sub> || = || 8<sub>dec</sub> || = || 10<sub>oct</sub> ||style="background:black; width:2px" | || style="background: red;width:24px"|1|| style="background: white;width:24px"|0|| style="background: white;width:24px"|0|| style="background: white;width:24px"|0||style="background: black; width:2px" |
|-style="background:#FEE978; color:black; height:24px"
| style="background:black; width:2px" | || '''9'''<sub>hex</sub> || = || 9<sub>dec</sub> ||= || 11<sub>oct</sub> ||style="background:black; width:2px" | || style="background: red;width:24px"|1|| style="background: white;width:24px"|0|| style="background: white;width:24px"|0|| style="background: red;width:24px"|1||style="background: black; width:2px" |
|-style="background:#FDC888; color:black; height:24px"
| style="background:black; width:2px" | || '''A'''<sub>hex</sub>|| = || 10<sub>dec</sub> || = || 12<sub>oct</sub> ||style="background:black; width:2px" | || style="background: red;width:24px"|1|| style="background: white;width:24px"|0|| style="background: red;width:24px"|1|| style="background: white;width:24px"|0||style="background: black; width:2px" |
|-style="background:#E3EDE9; color:black; height:24px"
| style="background:black; width:2px" | || '''B'''<sub>hex</sub>|| = || 11<sub>dec</sub> || = || 13<sub>oct</sub> ||style="background:black; width:2px" | || style="background: red;width:24px"|1|| style="background: white;width:24px"|0|| style="background: red;width:24px"|1|| style="background: red;width:24px"|1||style="background: black; width:2px" |
|- style="background:black; height:2px"
| style="background:black; width:2px" | || || || || || || || || || || ||
|-style="background:#FDC888; color:black; height:24px"
| style="background:black; width:2px" | || '''C'''<sub>hex</sub>|| = || 12<sub>dec</sub> || = || 14<sub>oct</sub> ||style="background:black; width:2px" | || style="background: red;width:24px"|1|| style="background: red;width:24px"|1|| style="background: white;width:24px"|0|| style="background: white;width:24px"|0||style="background: black; width:2px" |
|-style="background:#E3EDE9; color:black; height:24px"
| style="background:black; width:2px" | || '''D'''<sub>hex</sub>|| = || 13<sub>dec</sub> ||= || 15<sub>oct</sub> ||style="background:black; width:2px" | || style="background: red;width:24px"|1|| style="background: red;width:24px"|1|| style="background: white;width:24px"|0|| style="background: red;width:24px"|1||style="background: black; width:2px" |
|-style="background:#E3EDE9; color:black; height:24px"
| style="background:black; width:2px" | || '''E'''<sub>hex</sub>|| = || 14<sub>dec</sub> ||= || 16<sub>oct</sub> ||style="background:black; width:2px" | || style="background: red;width:24px"|1|| style="background: red;width:24px"|1|| style="background: red;width:24px"|1|| style="background: white;width:24px"|0||style="background: black; width:2px" |
|-style="background:#FDC888; color:black; height:24px"
| style="background:black; width:2px" | || '''F'''<sub>hex</sub>|| = || 15<sub>dec</sub> || = || 17<sub>oct</sub> ||style="background:black; width:2px" | || style="background: red;width:24px"|1|| style="background: red;width:24px"|1|| style="background: red;width:24px"|1|| style="background: red;width:24px"|1||style="background: black; width:2px" |
|- style="background:black; height:2px"
| style="background:black; width:2px" | || || || || || || || || || || ||
'''3'''x16<sup>2</sup> + '''14'''x16<sup>1</sup> + '''8'''x16<sup>0</sup> = 768 + 224 + 8 = 1000.
 
Шістнадцяткова система числення широко вживана в [[Інформатика|інформатиці]], оскільки значення кожного [[Байт|байту]] можна записати у вигляді двох цифр шістнадцяткової системи. Таким чином значення послідовних байтів можна представити у вигляді списку двозначних чисел. В той же час запис 4 [[біт|бітів]]ів можна представити однією шістнадцятковою цифрою.
 
В [[математика|математиці]] числа в недесятковихне десяткових системах позначуються нижнім індексом, що визначає основу позиції. Наприклад, 10<sub>16</sub>&nbsp;=&nbsp;16<sub>10</sub>. В інформатиці прийняті інші форми запису. В різних [[мова програмування|мовах програмування]] шістнадцятковий запис виглядає так:
* [[C (мова програмування)|C]], [[C++]], [[Java]]&nbsp;— використовують префікс 0x (нуль та ікс) напр. '''0x102f''', а в текстових послідовностях \x, напр. '''«\x2f»'''
* Деякі версії [[Асемблер|Асемблера]]а&nbsp;— за числом ставлять h, напр.наприклад '''102fh'''. При цьому, якщо число починається не з десяткової цифри, то спереду ставиться «0» (нуль): '''0FFh''' (255<sub>10</sub>)
* Інші асемблери (AT&T, Motorola), а також [[Паскаль (мова програмування)|Паскаль]] і деякі версії [[Бейсік|Бейсіку]]у використовують префікс $, напр.наприклад '''$102f'''
* Інші версії [[Бейсік|Бейсіку]]у використовують для позначення шістнадковихшістнадцяткових цифр комбінацію «&h». Наприклад, '''&h5A3'''.
* [[HTML]]&nbsp;— кольори [[RGB]] (<font color=red>Red&nbsp;— Червоний</font>, <font color=green>Green&nbsp;— Зелений</font>, <font color=blue>Blue&nbsp;— Синій</font>) записується як 3 двозначні числа hex від 0 до FF(255<sub>10</sub>) з попереднім знаком #, наприклад <font color="#FF8080">рожевий</font>&nbsp;— '''#<font color=red>FF</font><font color=green>80</font><font color=blue>80</font>''', <font color="#808080">сірий</font>&nbsp;— '''#<font color=red>80</font><font color=green>80</font><font color=blue>80</font>''', чорний&nbsp;— '''#<font color=red>00</font><font color=green>00</font><font color=blue>00</font>'''. Цей запис стосується 24-бітного кольору, який приписують тому чи іншому графічному елементу документу HTML.
 
 
== Див. також ==
== Посилання ==
* [http://www.refine.org.ua/pageid-5128-1.html Форми представлення чисел]
* [http://udb.iit.nau.edu.ua/data/files/ems/file_121.pdf Матеріали лекцій до вивчення дисципліни "Комп’ютерна«Комп'ютерна обробка текстової інформації"»]
* [https://ru.wikipedia.org/wiki Шестнадцатиричная система счисления]
 
[[Категорія:Системи числення]]