Ілюстрований самовчитель із цифрової графіки. Шістнадцяткова система числення

Звична в людини система числення – десяткова. В її основу входять десять цифр від 0 до 9. Шістнадцяткову систему відрізняє наявність у ній перших шести літер латинського алфавіту для запису чисел крім основних цифр. Тобто після цифри 9 слідує символ «A», який відповідає числу 10 для десяткової системи. Відповідно, F у шістнадцятковій системі – це 16 у десятковій. Використання шістнадцяти символів у системі – невипадковий вибір.

Одиниця інформації – біт. Вісім біт утворюють байт. Існує поняття, як машинне слово – це одиниця даних, що є двома , тобто шістнадцять біт. Таким чином, використовуючи шістнадцять різних символів можна описувати будь-яку інформацію, яка при обміні даних буде найменшою частинкою. З ними можна робити будь-які арифметичні дії, результат, відповідно, вийде також у шістнадцятковій системі.

Для того щоб відрізняти, що число записано в шістнадцятковій системі, після нього записують букву "h" або нижній індекс "16".

Застосування

Найбільш широке застосування шістнадцяткової системи числення - це коди помилок програмних продуктів, наприклад, операційної системи. Числа, закладені у цих кодах, стандартизовані. Маючи спеціальну таблицю, можна визначити, що саме означає та чи інша помилка.

У мовах низького рівня, максимально наближеним до машинних кодів, шістнадцяткова система застосовується для написання програм. Багато програмістів використовують її і при роботі з мовами високого рівня, тому що числа в цій системі за допомогою спеціальної таблиці відповідності легко переводяться в двійкову систему, на якій засновано роботу всієї цифрової техніки. Будь-яка інформація в комп'ютері, будь то музичний файл або текстовий документ, після трансляції представлена ​​послідовністю вихідного двійкового коду, а його зручніше переглядати символами шістнадцяткової системи.

Також одне із застосувань шістнадцяткових символів – опис колірних схем, тобто три компоненти R, G, B описуються відповідним даною системою способом. Цей підхід до запису отримав назву шістнадцятковий колір

Можливість переглянути програму в шістнадцятковому коді дозволяє налагодити її, внести зміни, а зловмисниками цей підхід використовується для злому програм.

Шістнадцятковий запис ("Hex")- Зручний спосіб подання двійкових значень. Так само, як десяткова система числення має основу десять, а двійкова - два, шістнадцяткова система має основу шістнадцять.

Система числення з основою 16 використовує числа від 0 до 9 і літери від A до F. Малюнок показує еквівалентні десяткові, двійкові та шістнадцяткові значення для двійкових чисел від 0000 до 1111. Для нас легше виражати значення у вигляді однієї шістнадцяткової цифри, ніж у бітів.

Розуміння Байтів

Враховуючи, що 8 бітів (байт) є стандартним двійковим угрупованням, двійкові числа від 00000000 до 11111111 можуть бути представлені в шістнадцятковому записі як числа від 00 до FF. Початкові нулі завжди відображаються, щоб завершити 8-розрядну виставу. Наприклад, двійкове значення 0000 1010 у шістнадцятковому вигляді буде 0A.

Подання Шістнадцяткових Значень

Відзначте:Важливо відрізняти шістнадцяткові значення від десяткових значень символів від 0 до 9, як показано малюнку.

Шістнадцяткові значення зазвичай представляються в тексті значенням, якому передує 0x (наприклад 0x73), або за допомогою нижнього індексу 16. Рідше, вони можуть супроводжуватися буквою H, наприклад 73H. Однак, оскільки текст нижнього індексу не розпізнається ні в командному рядку, ні в середовищах програмування, в технічному поданні шістнадцяткових чисел передує "0x" (нуль X). Тому, приклади вище були показані у вигляді 0x0A і 0x73 відповідно.

Шістнадцятковий запис використовується, щоб представляти MAC-адреси Ethernet та IP-адреси Версії 6.

Шістнадцяткові Перетворення

Перетворення чисел між десятковими і шістнадцятковими значеннями є простими, але швидке розподіл чи множення на 16 який завжди зручно. Якщо такі перетворення необхідні, зазвичай легше перетворити десяткове або шістнадцяткове значення на двійкове, а потім перетворити двійкове значення на десяткове або шістнадцяткове, залежно від того, що потрібно отримати.

З практикою можна розпізнати двійкові шаблони бітів, які відповідають десятковим і шістнадцятковим значенням. Малюнок показує ці шаблони для деяких 8-розрядних значень.

Шістнадцяткова система числення. аша перша програма.

Для написання програм на асемблері, необхідно розібратися з шістнадцятковою системою числення. Нічого складного у ній немає. Ми використовуємо у житті десяткову систему. Впевнений, що ви всі її знаєте, тому я намагатимусь пояснити шістнадцяткову систему, проводячи аналогію з десятковою.

Отже, в десятковій системі якщо ми до якогось числа праворуч додамо нуль, то це число збільшиться в 10 разів. Наприклад: 1 х 10 = 10; 10 х 10 = 100; 100 х 10 = 1000 і т.д. У системі ми використовуємо цифри від 0 до 9, тобто. десять різних цифр (власне, тому вона називається десяткова).

У шістнадцятковій системі ми використовуємо, відповідно, шістнадцять "цифр". Я спеціально написав слово "цифр" у лапках, т.к. у ній використовуються не лише цифри. Та й справді як так? Пояснюю: від 0 до 9 ми вважаємо так само, як і в десятковій, а ось далі буде так: A, B, C, D, E, F. Число F, як не важко порахувати, дорівнюватиме 15 в десятковій системі (див. табл. 1).

Десяткова кількість

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

Таблиця 1. Десяткова та шістнадцяткова система.

Т.ч., якщо ми до якогось числа в шістнадцятковій системі додамо праворуч нуль, то це число збільшиться в16 разів.

Приклад 1: 1 х 16 = 10; 10 х 16 = 100; 100 х 16 = 1000 і т.д.

Ви змогли відрізнити в Прикладі 1 шістнадцяткове число від десяткових? А із цього ряду: 10, 12, 45, 64, 12, 8, 19? Це можуть бути як шістнадцяткові, так і десяткові. Для того, щоб не було плутанини, і комп'ютер зміг би однозначно відрізнити одні числа від інших, в асемблері прийнято після шістнадцяткового числа ставити символ h або H ( H це скорочення від англ. hexadecimal (шістнадцяткове). Для стислості його іноді називають просто Hex ) . А після десяткового нічого не ставити. Т.к. числа від 0 до 9 в обох системах мають однакові значення, числа, записані як 5 і 5h одне і теж.

Т.о. Приклад 1 (див. вище) правильніше записати так: 1 х 16 = 10h; 10h x 16 = 100h; 100h х 16 = 1000h. Або так: 1h x 10h = 10h; 10h x 10h = 100h; 100h x 10h = 1000h.

Навіщо потрібна шістнадцяткова система, ми розглянемо у наступних випусках. А зараз для нашого прикладу програми, який буде розглянуто нижче, нам необхідно знати про існування шістнадцяткових чисел.

Отже, підіб'ємо підсумок. Шістнадцяткова система числення складається з 10 цифр (від 0 до 9) та 6 букв латинського алфавіту (A, B, C, D, E, F). Якщо до якогось числа в шістнадцятковій системі додамо праворуч нуль, то це число збільшиться в16 разів. Дуже важливо усвідомити цю тему, так як ми постійно використовуватимемо її при написанні програм.

Тепер трохи про те, як я буду робити приклади на Асемблері. Не зовсім зручно наводити їх у HTML-форматі, тому спершу буде сам код програми з пронумерованими рядками, а відразу після нього пояснення та примітки.

Приблизно так:

рядків Код програми
(1) mov ah,9

Пояснення:

У рядку (1) ми робимо те, а в рядку (15) те.

Велике прохання: НЕ копіюйте програми зі сторінки в буфер, а потім не вставляйте їх у Блокнот (або ще кудись)! Передрукуйте їх вручну у текстовому редакторі. Якщо є принтер, виділіть програму, роздрукуйте виділений фрагмент, а потім перебийте в редактор з паперу. Усі приклади потрібно набирати самостійно!Це прискорить запам'ятовування операторів.

І ще. Рядкові та писальні літери в асемблері не різняться. Записи виду:

Асемблером сприймаються однаково. Можна, звичайно, змусити Асемблер розрізняти малі й ПРОПИСНІ символи, але ми поки цього робити не будемо. Для зручності читання програми найкраще оператори друкувати малими літерами, а назви підпрограм та міток починати з великої. Але це як комусь буде зручно.

Отже, переходимо до нашої першої програми:

(1) CSEG segment

(2) org 100h

(4) Begin:

(6) mov ah,9

(7) mov dx,offset Message

(8) int 21h

(10) int 20h

(11)

(12) Message db "Hello, world! $"

(13) CSEG ends

(14) end Begin

Для того, щоб пояснити всі оператори цього прикладу, нам знадобиться кілька випусків. Тому опис деяких команд ми просто опустимо на цьому етапі. Просто вважайте, що так має бути. Найближчим часом ми розглянемо ці оператори докладно. Отже, рядки з номерами (1), (2) та (13) ви просто ігноруєте.

Рядки (3), (5), (9) та (11) залишаються порожніми. Це робиться для наочності. Асемблер їх просто опускатиме.

Тепер перейдемо до розгляду решти операторів. З рядка (4) починається код програми. Це мітка, що вказує асемблеру на початок коду. У рядку (14) стоять оператори end Begin ( Begin англ. початок; end кінець). Це кінець програми. Взагалі замість слова Begin можна було б використати щось інше. Наприклад, Start:. У такому разі нам довелося б і завершувати програму End Start (14).

Рядки (6) (8) виводять на екран повідомлення Hello, world!. Тут доведеться коротко розповісти про регістри процесора (докладніше цю тему ми розглянемо в наступному випуску).

Регістр процесора - це спеціально відведена пам'ять для зберігання якого-небудь числа.

Наприклад:

Якщо ми хочемо скласти два числа, то в математиці запишемо так:

A, B та C це свого роду регістри (якщо говорити про комп'ютер), у яких можуть зберігатися деякі дані. А=5 можна прочитати як: Привласнюємо А число 5 .

Для присвоєння регістру якогось значення, в Асемблері існує оператор mov (від англ. move завантажити). Рядок (6) слід читати так: Завантажуємо в регістр AHчисло 9 (простіше кажучи, привласнюємо AHчисло 9).Нижче розглянемо, навіщо це треба.

У рядку (7) завантажуємо в регістр DX адресу повідомлення для виведення (у цьому прикладі це буде рядокHello, world!$).

Переривання докладно розглядатимуться у наступних випусках. Тут скажу кілька слів.

Переривання MS-DOS це свого роду підпрограма (частина MS-DOS), яка постійно в пам'яті і може викликатися в будь-який час з будь-якої програми.

Розглянемо вищесказане з прикладу (дрібним шрифтом виділимо примітки):

Програма складання двох чисел

ПочатокПрограми

A=5 в змінну A заносимо значення 5

B=8 змінну B значення 8

ВикликПідпрограми Додавання

тепер С дорівнює 13

A=10 те саме, тільки інші числа

B=25

ВикликПідпрограми Додавання

тепер С дорівнює 35

КінецьПрограми

Підпрограма Додавання

C=A+B

ПоверненняЗПідпрограми повертаємось у те місце, звідки викликали

КінецьПідпрограми

У цьому прикладі ми двічі викликали підпрограму Додавання, яка склала два числа, передані їй у змінних A та B . Результат поміщається в змінну С. Коли викликається підпрограма, комп'ютер запам'ятовує, з якого місця її викликали, а потім, коли закінчила роботу підпрограма, комп'ютер повертається в те місце, звідки вона викликалася. Т.о. можна викликати підпрограми невизначену кількість разів з будь-якого місця.

При виконанні рядка (8) програми на асемблері ми викликаємо підпрограму (в даному випадку це називається переривання), яка виводить на екран рядок. Для цього ми, власне, і поміщаємо необхідні значення в регістри. Всю необхідну роботу (виведення рядка, переміщення курсору) перебирає підпрограма. Цей рядок можна прочитати так: викликаємо двадцять перше переривання ( int від англ. interrupt переривання). Зверніть увагу, що після числа 21 стоїть буква h . Це, як ми вже знаємо, шістнадцяткове число (33 у десятковій системі). Звичайно, нам нічого не заважає замінити рядок int 21h на int 33. Програма працюватиме коректно. Просто в Асемблері прийнято вказувати номер переривання у шістнадцятковій системі.

У рядку (10) ми, як ви вже здогадалися, викликаємо переривання 20 h . Для виклику цього переривання не потрібно вказувати будь-які значення в регістрах. Воно виконує лише одне завдання: вихід із програми (вихід у DOS). В результаті виконання переривання 20h програма повернеться туди, звідки її запускали (завантажували, викликали). Наприклад, в Norton Commander чи DOS Navigator.

Рядок (12) містить повідомлення для виведення. Перше слово ( message повідомлення) назва повідомлення. Воно може бути будь-яким (наприклад, mess або string та ін.). Про зверніть увагу на рядок (7), в якому ми завантажуємо в регістр DX адресу нашого повідомлення.

Можна створити ще один рядок, який назвемо Mess2. Потім, починаючи з рядка (9), вставимо наступні команди:

(10) mov dx,offset Mess2

(13) Message db "Hello, world! $"

(14) Mess2 db "Це Я! $"

та асемблювати нашу програму заново. Сподіваюся, що ви здогадалися, що станеться

Зверніть увагу на останній символ у рядках Message та Mess2 - $. Він вказує на кінець рядка. Якщо ми його приберемо, то 21 h переривання продовжить висновок доти, доки не зустрінеться десь у пам'яті символ $. На екрані ми побачимосміття.

Якщо у вас є наладчик, то можна подивитися як працюватиме наша програма.

Цілі цього випуску не було розібратися детально з кожним оператором. Це неможливо, т.к. у вас ще недостатньо знань. Я вважаю, що вже через 3-4 випуски ви зрозумієте принцип та структуру програми на Ассемблері. Можливо, вам здалася мова Асемблера надзвичайно складною, але це, повірте, з першого погляду.

Багато користувачів комп'ютерів розуміють, що комп'ютер працює у двійковій системі числення. Традиційно стани двійкової системи представляються цифрами 0 і 1, хоча, якщо говорити точніше, кожен стан позначає наявність або відсутність сигналу, тобто правильніше буде назвати стани "вимкнено" і "включено", або "ні" і "так". Стану «вимкнено» чи «ні» відповідає цифра 0, а стану «включено» чи «так» цифра 1. Простим користувачам зазвичай немає необхідності повністю розуміти пристрій комп'ютера, проте двійкова система числення дається взнаки у вигляді різних обмежень заснованих на ступені двійки . Більш компактний варіант двійкової системи називають шістнадцятковою. Число шістнадцять є четвертим ступенем числа два. З цього випливає, що можна досить просто переводити довгі двійкові послідовності з нулів і одиниць у короткі шістнадцяткові. Для цього достатньо розбити двійкову послідовність на групи по чотири розряди (цифри) починаючи з молодшого розряду (праворуч) та замінити кожну групу на відповідне шістнадцяткове значення.

Шістнадцяткову систему прийнято використовувати для зручності сприйняття двійкових даних, тому що переклади з шістнадцяткової системи в двійкову та назад здійснюються простою заміною рядків. Комп'ютер працює виключно з двійковими послідовностями, а шістнадцятковий запис цієї послідовності в чотири рази компактніший, оскільки у цієї системи основа 16 (2 16), а двійкова 2. Двійкова послідовність може бути досить громіздкою. Наприклад, запис числа 513 вимагає десять двійкових розрядів (1000000001), а шістнадцятковій лише три (201). Тим не менш, для представлення будь-яких шістнадцяткових чисел потрібно шістнадцять різних символів, а не десять, які використовуються у звичній нам десятковій системі числення. Перші десять символів це символи в інтервалі від 0 по 9, інші це літери латинського алфавіту в інтервалі від A до F. Букви зазвичай (але не завжди) пишуть у верхньому регістрі (великі) у шістнадцятковому записі числа. Перші десять символів (від 0 до 9) записуються аналогічно цифрам у десятковій системі числення та відповідають їм. Літери в інтервалі від A до F відповідають значенням в інтервалі від 10 до 15.

Розглянемо відповідність чисел від 0 по 15 шістнадцятковій та двійковій системам числення.

Десятковий запис Шістнадцятковий запис Двійковий запис
0 0 0000
1 1 0001
2 2 0010
3 3 0011
4 4 0100
5 5 0101
6 6 0110
7 7 0111
8 8 1000
9 9 1001
10 A 1010
11 B 1011
12 C 1100
13 D 1101
14 E 1110
15 F 1111

Записи 10, 11 і т. д. у десятковій, двійковій та шістнадцятковій системах не відповідають один одному. Розглянемо невеликий приклад. Нехай у нас є шістнадцяткове число 1A5E. для переведення в двійковий запис досить просто замінити шістнадцяткові розряди на відповідні двійкові групи. Вийде 0001 1010 0101 1110. Якщо прибрати незначні нулі перед числом і записати його без роздільників отримаємо 1101001011110. Для зворотного перекладу розділимо число на групи по чотири розряди починаючи з молодшого (з правої сторони), а також для зручності додамо 4 розряди. Отримаємо 0001 1010 0101 1110. Замінимо групи на відповідні шістнадцяткові значення, отримаємо 1A5E.

Для переведення шістнадцяткового числа в десяткове уявлення можна скористатися схемою, за якою ми записуємо десяткові числа. У десятковому числі кожен розряд позначає відповідний ступінь числа десять починаючи з нульової зі зростанням праворуч наліво. Наприклад, десяткове число 123 означає 1*10 2 + 2*10 1 + 3*10 0 . Аналогічним методом переведемо число 1A5E до десяткової системи числення. У шістнадцятковій системі числення, так само як і в десятковій, кожен розряд позначає відповідний ступінь числа шістнадцять починаючи з нульової зі зростанням праворуч наліво. Символи 1 і 5 у шістнадцятковій системі числення відповідають значенням 1 та 5 у десятковій, а символи A та E - 10 та 14. Тоді 1A5E можна подати у десятковій системі числення як 1*16 3 + 10*16 2 + 5*16 1 + 14 * 16 0 = 6750. Однак для оцінки шістнадцяткових чисел зовсім не обов'язково переводити їх у десяткові. Правила порівняння, складання та множення в цій системі такі ж як і в десятковій, головне не забувати, що кожен розряд може містити значення від 0 до 15. Для більш швидкого переведення числа між системою числення можна скористатися стандартним калькулятором у Windows, для цього достатньо в розширеному режимі калькулятора вибрати систему числення, ввести в ній число та вибрати потрібну систему числення, в якій слід відобразити результат.

Так як шістнадцяткові числа, що складаються тільки з чисел, легко сплутати з десятковими, їх зазвичай позначають так, щоб було ясно, що використовується саме шістнадцятковий запис. Шістнадцяткові записи зазвичай позначають або додаванням у кінець малої літери „h”, або приставки „0x” перед записом числа. Таким чином, шістнадцяткове число 1A5E може бути записане як 1A5Eh або 0x1A5E, де „h” на кінці або „0x” на початку позначають, що використовується шістнадцятковий запис.

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

Як випливає з назви, основою даної системи є число шістнадцять 16 або у шістнадцятковій системі 10 16 . Щоб не було плутанини, при записі чисел у системах числення відмінних від десяткових, праворуч внизу від основного запису числа будемо вказувати основу системи числення. Якщо основою системи є число шістнадцять, то для зображення чисел нам знадобиться шістнадцять цифр. Перші десять цифр беруться з звичної нам десяткової системи (0,1,..,8,9) і ще додаються шість букв латинського алфавіту (a,b,c,d,e,f). Наприклад, у шістнадцятковому числі 3f7c2 літери "f" і "c" є шістнадцятковими цифрами.

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

Нуль - 0 ;
Один - 1 ;
Два - 2 ;
...
і так далі…
...
Вісім - 8 ;
Дев'ять - 9 ;
Десять - a;
Одинадцять - b;
Дванадцять - c;
Тринадцять - d;
Чотирнадцять - e;
П'ятнадцять - f;

А що робити далі? Усі цифри скінчилися. Як зобразити число Шістнадцять? Вчинимо аналогічно тому, як ми надходили в десятковій системі. Там ми вводили поняття десятка, тут же запровадимо поняття "шістнадцять" і скажемо, що шістнадцять - це один "шістнадцять" і нуль одиниць. А це вже можна і записати – "10 16".

Отже, Шістнадцять - 10 16 (одна "шістнадцять", нуль одиниць)
Сімнадцять - 11 16 (одна "шістнадцять", одна одиниця)
...
і так далі…
...
Двадцять п'ять - 19 16 (одна "шістнадцять", дев'ять одиниць)
Двадцять шість - 1a 16 (одна "шістнадцять", десять одиниць)
Двадцять сім - 1b 16 (одна "шістнадцять", одинадцять одиниць)
...
і так далі…
...
Тридцять - 1e 16 (одна "шістнадцять", чотирнадцять одиниць)
Тридцять один - 1f 16 (одна "шістнадцять", п'ятнадцять одиниць)
Тридцять два - 20 16 (дві "шістнадцять", нуль одиниць)
Тридцять три - 21 16 (дві "шістнадцять", одна одиниця)
...
і так далі…
...
Двісті п'ятдесят п'ять - ff 16 (п'ятнадцять по "шістнадцять", п'ятнадцять одиниць)

Двісті п'ятдесят шість - 100 16 (одна "Двісті п'ятдесят шість", нуль по "шістнадцять", нуль одиниць)
Двісті п'ятдесят сім - 101 16 (одна "Двісті п'ятдесят шість", нуль по "шістнадцять", одна одиниця)
Двісті п'ятдесят вісім - 102 16 (одна "Двісті п'ятдесят шість", нуль по "шістнадцять", дві одиниці)
...
і так далі...
...

Завжди, коли у нас вичерпався набір цифр для відображення наступного числа, ми вводимо більші одиниці рахунку (тобто рахуємо по "шістнадцять", по "Двісті п'ятдесят шість" і т.д.) і записуємо число з подовженням на один розряд .

Розглянемо число 3e2c 16 записане в шістнадцятковій системі числення. Про нього можна сказати, що воно містить: три по чотири тисячі дев'яносто шість, "e" (чотирнадцять) по двісті п'ятдесят шість, два по шістнадцять та "c" (дванадцять) одиниць. І отримати його значення через цифри, що входять до нього, можна наступним чином.

3e2c 16 = 3 *4096+14 *256+2 *16+12 *1, тут і далі знак * (зірочка) означає множення.

Але ряд чисел 4096, 256, 16, 1 є не що інше, як цілі ступені числа шістнадцять (підстави системи числення) і тому можна записати:

3e2c 16 = 3 *16 3 +14 *16 2 +2 *16 1 +12 *16 0

Подібним чином для шістнадцяткового дробу (дрібного числа) наприклад: 0.5a2 16 про нього можна сказати, що воно містить: п'ять шістнадцятих, "a" (десять) двісті п'ятдесят шостих і дві чотиритисячі дев'яносто шостих часток. І його значення можна обчислити так:

0.5a2 16 = 5 *(1/16) + 10 *(1/256) + 2 *(1/4096)

І тут ряд чисел 1/16; 1/256 і 1/4096 є не що інше, як цілі ступені числа шістнадцять і ми також можемо записати:

0.5a2 16 = 5 *16 -1 + 10 *16 -2 + 2 *16 -3

Для змішаного числа 7b2.1f9 аналогічно можемо записати:

7b2.1f9 = 7 *16 2 +11 *16 1 +2 *16 0 +1 *16 -1 +15 *16 -2 +9 *16 -3

Пронумеруємо розряди цілої частини деякого шістнадцяткового числа, праворуч наліво, як 0,1,2…n (нумерація починається з нуля!). А розряди дробової частини, ліворуч, як -1,-2,-3…-m, то значення деякого шістнадцяткового числа може бути обчислено за формулою:

N = d n 16 n +d n-1 16 n-1 +…+d 1 16 1 +d 0 16 0 +d -1 16 -1 +d -2 16 -2 +…+d -(m-1) 16 -(m-1) +d -m 16 -m

Де: n- кількість розрядів у цілій частині числа мінус одиниця;
m- кількість розрядів у дробовій частині числа
d i- цифра яка стоїть у i-м розряді

Ця формула називається формулою порозрядного розкладання шістнадцяткового числа, тобто. числа записаного у шістнадцятковій системі числення. Якщо ми у цій формулі замінимо число шістнадцять на деяке довільне число q, то отримаємо формулу розкладання для числа записаного в q-йсистемі числення, тобто. з основою q:

N = d n q n +d n-1 q n-1 +…+d 1 q 1 +d 0 q 0 +d -1 q -1 +d -2 q -2 +…+d -(m-1) q - (m-1) +d-m q-m

За цією формулою завжди можна обчислити значення числа записаного у будь-якій позиційній системі числення з основою q.

З іншими системами числення можна познайомитись на нашому сайті за наступними посиланнями.