Шістнадцяткова система числення: відмінності між версіями
[неперевірена версія] | [неперевірена версія] |
Рядок 60: | Рядок 60: | ||
| 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: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:#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"| |
| 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:#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; 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" | |
Версія за 13:39, 2 лютого 2016
Шістнадцяткова систе́ма чи́слення — це позиційна система числення з основою 16. Тобто кожне число в ній записується за допомогою 16-ти символів. Арабські цифри від 0 до 9 відповідають значенням від нуля до дев'яти, а 6 літер латинської абетки A, B, C, D, E, F відповідають значенням від десяти до п'ятнадцяти. Шістнадцяткова система числення широко використовується розробниками комп'ютерів та програмістами.
Цю систему часто називають також Hex (початкові літери англ. hexadecimal — шістнадцятковий).
Декілька різних позначень використовуються для позначення шістнадцяткових констант в комп'ютерних мовах. Префікс «0x» широко поширений через його використання в Unix і C (і пов'язаних з ними операційних систем і мов). Крім того, деякі автори позначають шістнадцяткові значення, використовуючи суфікс чи індекс. Наприклад, можна було б написати 0x2AF3 або 2AF316, залежно від вибору способу позначень.
Як приклад, для шістнадцяткового числа 2AF316 знайдемо відповідне число в десятковій системі числення. Зауважимо, що 2AF316 дорівнює сумі (200016 + A0016 + F016 + 316), якщо розкласти число на послідовність позиційних значень елементів числа, то перетворення кожного елемента в десяткове значення, можна описати так: (216 × 163) + (A16 × 162) + (F16 × 161) + (316 × 160) =
(2 × 4096) + (10 × 256) + (15 × 16) + (3 × 1) = 10995.
Кожна шістнадцяткова цифра представляється чотирма бінарними цифрами (бітами), і основне застосування шістнадцяткового запису — це зручний запис двійкового коду. Одна шістнадцяткова цифра є ніблом, який є половиною з октету або байту (8 біт). Наприклад, значення байт лежить в діапазоні від 0 до 255 (в десяткових числах), але може бути більш зручно представити у вигляді двох шістнадцятирічних цифр в діапазоні від 00 до FF. Шістнадцяткова система також широко використовується для представлення адресації пам'яті комп'ютера.
Використання
Дуже часто використовується у низькорівневому програмуванні та комп'ютерній документації, оскільки в сучасних комп'ютерах мінімальною одиницею пам'яті є 8-бітний байт, значення якого зручно записувати двома шістнадцятковими цифрами. Таке використання почалося з системи IBM/360, де вся документація використовувала саме таку систему числення, у той час коли в документації інших комп'ютерних системах того часу (навіть 8-бітними символами, як, наприклад, PDP-11 або БЕСМ-6) використовували вісімкову систему числення.
В стандарті Юнікода номер символу прийнято записувати в шістнадцятковому виді, використовуючи не менш 4 цифр (за необхідності — з провідними нулями).
Переклад чисел з одної системи числення в іншу
Переклад чисел з шістнадцяткової системи в десяткову
Для перекладу шістнадцяткового числа в десяткове необхідно це число представити у вигляді суми добутків ступенів основи шістнадцяткової системи числення на відповідні цифри в розрядах шістнадцяткового числа.
Наприклад, треба перевести шістнадцяткове число 5A3 в десяткове. В цьому числі 3 цифри. У відповідності з наданим правилом представимо його у вигляді суми ступенів з основою 16:
= 3·1+10·16+5·256 = 3+160+1280 = 144310
Переклад чисел із двійкової системи в шістнадцяткову та навпаки
Для перекладу багатозначного числа в шістнадцяткову систему треба розбити його на тетради справа наліво та замінити кожну тетраду відповідною шістнадцятковою цифрою. Для перекладу числа з шістнадцяткової системи в двійкову треба замінити кожну його цифру на відповідну тетраду з приведеної нижче таблиці перекладу.
Наприклад:
Таблиця перекладу чисел
0hex | = | 0dec | = | 0oct | 0 | 0 | 0 | 0 | |||
1hex | = | 1dec | = | 1oct | 0 | 0 | 0 | 1 | |||
2hex | = | 2dec | = | 2oct | 0 | 0 | 1 | 0 | |||
3hex | = | 3dec | = | 3oct | 0 | 0 | 1 | 1 | |||
4hex | = | 4dec | = | 4oct | 0 | 1 | 0 | 0 | |||
5hex | = | 5dec | = | 5oct | 0 | 1 | 0 | 1 | |||
6hex | = | 6dec | = | 6oct | 0 | 1 | 1 | 0 | |||
7hex | = | 7dec | = | 7oct | 0 | 1 | 2 | 1 | |||
8hex | = | 8dec | = | 10oct | 1 | 0 | 0 | 0 | |||
9hex | = | 9dec | = | 11oct | 1 | 0 | 0 | 1 | |||
Ahex | = | 10dec | = | 12oct | 1 | 0 | 1 | 0 | |||
Bhex | = | 11dec | = | 13oct | 1 | 0 | 1 | 1 | |||
Chex | = | 12dec | = | 14oct | 1 | 1 | 0 | 0 | |||
Dhex | = | 13dec | = | 15oct | 1 | 1 | 0 | 1 | |||
Ehex | = | 14dec | = | 16oct | 1 | 1 | 1 | 0 | |||
Fhex | = | 15dec | = | 17oct | 1 | 1 | 1 | 1 | |||
Запис числа формується за загальним принципом: на n-й позиції (справа наліво від 0) стоїть цифра, що відповідає кількості n-х степенів шістнадцяти у цьому числі. Наприклад, число записане в десятковій системі як 1000, в hex записується як 3E8, де:
3x162 + 14x161 + 8x160 = 768 + 224 + 8 = 1000.
Шістнадцяткова система числення широко вживана в інформатиці, оскільки значення кожного байту можна записати у вигляді двох цифр шістнадцяткової системи. Таким чином значення послідовних байтів можна представити у вигляді списку двозначних чисел. В той же час запис 4 бітів можна представити однією шістнадцятковою цифрою.
В математиці числа в не десяткових системах позначуються нижнім індексом, що визначає основу позиції. Наприклад, 1016 = 1610. В інформатиці прийняті інші форми запису. В різних мовах програмування шістнадцятковий запис виглядає так:
- C, C++, Java — використовують префікс 0x (нуль та ікс) напр. 0x102f, а в текстових послідовностях \x, напр. «\x2f»
- Деякі версії Асемблера — за числом ставлять h, наприклад 102fh. При цьому, якщо число починається не з десяткової цифри, то спереду ставиться «0» (нуль): 0FFh (25510)
- Інші асемблери (AT&T, Motorola), а також Паскаль і деякі версії Бейсіку використовують префікс $, наприклад $102f
- Інші версії Бейсіку використовують для позначення шістнадцяткових цифр комбінацію «&h». Наприклад, &h5A3.
- HTML — кольори RGB (Red — Червоний, Green — Зелений, Blue — Синій) записується як 3 двозначні числа hex від 0 до FF(25510) з попереднім знаком #, наприклад рожевий — #FF8080, сірий — #808080, чорний — #000000. Цей запис стосується 24-бітного кольору, який приписують тому чи іншому графічному елементу документу HTML.
Див. також
- Система числення
- Позиційні системи числення
- Двійкова система числення
- Вісімкова система числення
- Десяткова система числення