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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
[перевірена версія][перевірена версія]
Вилучено вміст Додано вміст
Скасовано останні 3 редагування (62.221.40.186) і відновлено версію 16823369 91.198.10.222
Немає опису редагування
Рядок 14: Рядок 14:
В стандарті [[Юнікод]]а номер символу прийнято записувати в шістнадцятковому виді, використовуючи не менш 4 цифр (за необхідності — з [[провідні нулі| провідними нулями]]).
В стандарті [[Юнікод]]а номер символу прийнято записувати в шістнадцятковому виді, використовуючи не менш 4 цифр (за необхідності — з [[провідні нулі| провідними нулями]]).


== Переклад чисел з одної системи числення в іншу ==
== Переведення чисел з одної системи числення в іншу ==


=== Переклад чисел з шістнадцяткової системи в десяткову ===
=== Переведення чисел з шістнадцяткової системи в десяткову ===
Для перекладу шістнадцяткового числа в десяткове необхідно це число представити у вигляді суми добутків ступенів основи шістнадцяткової системи числення на відповідні цифри в розрядах шістнадцяткового числа.
Для переведення шістнадцяткового числа в десяткове необхідно це число представити у вигляді суми добутків ступенів основи шістнадцяткової системи числення на відповідні цифри в розрядах шістнадцяткового числа.


Наприклад, треба перевести шістнадцяткове число '''5A3''' в десяткове. В цьому числі 3 цифри. У відповідності з наданим правилом представимо його у вигляді суми ступенів з основою 16:
Наприклад, треба перевести шістнадцяткове число '''5A3''' в десяткове. В цьому числі 3 цифри. У відповідності з наданим правилом представимо його у вигляді суми ступенів з основою 16:
Рядок 23: Рядок 23:
<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>
<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>


=== Переклад чисел із двійкової системи в шістнадцяткову та навпаки ===
=== Переведення чисел із двійкової системи в шістнадцяткову та навпаки ===
Для перекладу багатозначного числа в шістнадцяткову систему треба розбити його на [[ніббл| тетради]] справа наліво та замінити кожну тетраду відповідною шістнадцятковою цифрою. Для перекладу числа з шістнадцяткової системи в двійкову треба замінити кожну його цифру на відповідну тетраду з приведеної нижче таблиці перекладу.
Для переведення багатозначного числа у шістнадцяткову систему треба розбити його на [[ніббл| тетради]] справа наліво та замінити кожну тетраду відповідною шістнадцятковою цифрою. Для переведення числа з шістнадцяткової системи у двійкову треба замінити кожну його цифру на відповідну тетраду з наведеної нижче таблиці переведення.


Наприклад:
Наприклад:
<center>'''010110100011<sub>2</sub> = 0101 1010 0011 = 5A3<sub>16</sub>'''</center>
<center>'''010110100011<sub>2</sub> = 0101 1010 0011 = 5A3<sub>16</sub>'''</center>


=== Таблиця перекладу чисел ===
=== Таблиця переведення чисел ===


{| border="0" cellspacing="0" cellpadding="0" style="text-align:center;border:2px"
{| border="0" cellspacing="0" cellpadding="0" style="text-align:center;border:2px"
Рядок 81: Рядок 81:
'''3'''x16<sup>2</sup> + '''14'''x16<sup>1</sup> + '''8'''x16<sup>0</sup> = 768 + 224 + 8 = 1000.
'''3'''x16<sup>2</sup> + '''14'''x16<sup>1</sup> + '''8'''x16<sup>0</sup> = 768 + 224 + 8 = 1000.


Шістнадцяткова система числення широко вживана в [[Інформатика|інформатиці]], оскільки значення кожного [[Байт|байту]] можна записати у вигляді двох цифр шістнадцяткової системи. Таким чином значення послідовних байтів можна представити у вигляді списку двозначних чисел. В той же час запис 4 [[біт]]ів можна представити однією шістнадцятковою цифрою.
Шістнадцяткова система числення широко вживана в [[Інформатика|інформатиці]], оскільки значення кожного [[Байт|байту]] можна записати у вигляді двох цифр шістнадцяткової системи. Таким чином значення послідовних байтів можна подати у вигляді списку двозначних чисел. В той же час запис 4 [[біт]]ів можна подати однією шістнадцятковою цифрою.


В [[математика|математиці]] числа в не десяткових системах позначуються нижнім індексом, що визначає основу позиції. Наприклад, 10<sub>16</sub>&nbsp;=&nbsp;16<sub>10</sub>. В інформатиці прийняті інші форми запису. В різних [[мова програмування|мовах програмування]] шістнадцятковий запис виглядає так:
В [[математика|математиці]] числа в не десяткових системах позначуються нижнім індексом, що визначає основу системи. Наприклад, 10<sub>16</sub>&nbsp;=&nbsp;16<sub>10</sub>. В інформатиці прийняті інші форми запису. В різних [[мова програмування|мовах програмування]] шістнадцятковий запис виглядає так:
* [[C (мова програмування)|C]], [[C++]], [[Java]]&nbsp;— використовують префікс 0x (нуль та ікс) напр. '''0x102f''', а в текстових послідовностях \x, напр. '''«\x2f»'''
* [[C (мова програмування)|C]], [[C++]], [[Java]]&nbsp;— використовують префікс 0x (нуль та ікс) напр. '''0x102f''', а в текстових послідовностях \x, напр. '''«\x2f»'''
* Деякі версії [[Асемблер]]а&nbsp;— за числом ставлять h, наприклад '''102fh'''. При цьому, якщо число починається не з десяткової цифри, то спереду ставиться «0» (нуль): '''0FFh''' (255<sub>10</sub>)
* Деякі версії [[Асемблер]]а&nbsp;— за числом ставлять h, наприклад '''102fh'''. При цьому, якщо число починається не з десяткової цифри, то спереду ставиться «0» (нуль): '''0FFh''' (255<sub>10</sub>)

Версія за 10:36, 19 березня 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:

5A316 = 3·160+10·161+5·162=
= 3·1+10·16+5·256 = 3+160+1280 = 144310

Переведення чисел із двійкової системи в шістнадцяткову та навпаки

Для переведення багатозначного числа у шістнадцяткову систему треба розбити його на тетради справа наліво та замінити кожну тетраду відповідною шістнадцятковою цифрою. Для переведення числа з шістнадцяткової системи у двійкову треба замінити кожну його цифру на відповідну тетраду з наведеної нижче таблиці переведення.

Наприклад:

0101101000112 = 0101 1010 0011 = 5A316

Таблиця переведення чисел

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 1 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.

Див. також

Посилання