✖

Переведення між системами числення

Як переводити числа з десяткової системи числення в інші системи і, навпаки, як переводити числа з інших систем у десяткову.

Що таке система числення

Зазвичай ми працюємо з десятковою системою числення. У ній є десять цифр: 0, 1, 2, 3, 4, 5, 6, 7, 8 і 9. Десяткова система вирізняється тим, що коли ми множимо якесь число, наприклад 57, на десять, то зсуваємося на один розряд — для запису цього числа потрібна ще одна цифра: 570.

Можливі й інші системи числення. Вісімкова система містила б лише цифри 0, …, 7. Тоді вираз 7 + 1 дорівнював би числу 10, бо у вісімковій системі цифри 8 немає. У шістнадцятковій системі були б цифри 0, 1, … 14, 15. Іноді замість цифр, більших за 9, використовують літери, тож у шістнадцятковій системі були б цифри 0, …9, A, B, C, D, E, F.

Дивно, але з іншими системами числення ми стикаємося й у повсякденному житті. Наприклад, час — секунди й хвилини — ми відлічуємо в шістдесятковій системі. Кожну мить доби можна записати як число в шістдесятковій системі з трьох цифр. Перша цифра означає години, друга — хвилини, третя — секунди. Якщо як роздільник цифр узяти двокрапку, отримаємо, наприклад, число 14:05:59. Зверни увагу: коли до цього часу додати одну секунду, ми отримаємо не 14:05:60, а 14:06:00, — бо цифри 60 у шістдесятковій системі не існує.

Переведення з десяткової системи у двійкову

Нехай на аркуші записано число 70. Тепер хочемо перевести його у двійкову, або бінарну, систему. Принцип досить простий: число, яке хочемо перевести, ділимо на два, доки не дійдемо до нуля, і щоразу записуємо остачу від цілочисельного ділення. Якщо хочемо перевести число в іншу систему, наприклад у шістнадцяткову, ділимо на шістнадцять. Якщо в шісткову — ділимо на шість. На практиці це виглядає так:

$$\begin{eqnarray} 70 : 2 &= 35 & \longrightarrow 0 \quad(\mbox{остача})\\ 35 : 2 &= 17 & \longrightarrow 1\\ 17 : 2 &= 8 & \longrightarrow 1\\ 8 : 2 &= 4 & \longrightarrow 0\\ 4 : 2 &= 2 & \longrightarrow 0\\ 2 : 2 &= 1 & \longrightarrow 0\\ 1 : 2 &= 0 & \longrightarrow 1 \end{eqnarray}$$

Шукане число у двійковій системі складається з остач. Але беремо їх не згори, а знизу. Отже, число 70 у двійковій системі — це 1000110.

Переведення з двійкової системи в десяткову

У зворотному напрямку діємо так. Нехай маємо число 1100010 і хочемо перевести його в десяткову систему. Цей напрямок простіший, достатньо обчислити таку суму:

$$ 1100010_{2} = 1\cdot2^{6}+1\cdot2^{5}+0\cdot2^{4}+0\cdot2^{3}+0\cdot2^{2}+1\cdot2^{1}+0\cdot2^{0} $$

Кожен доданок має вигляд x · 2i, де x — цифра початкового двійкового числа, а i зростає справа наліво щоразу на одиницю. Оскільки ми переводимо число 1100010, сума виглядає так:

$$ 1100010_{2} = \fbox{1}\cdot2^{6}+\fbox{1}\cdot2^{5}+\fbox{0}\cdot2^{4}+\fbox{0}\cdot2^{3}+\fbox{0}\cdot2^{2}+\fbox{1}\cdot2^{1}+\fbox{0}\cdot2^{0} $$

У числі 1100010 сім цифр, тому показники степенів у двійки будуть послідовно 6, 5, …, 1, 0. Піднісши до степеня й помноживши, отримаємо вираз:

$$ 1100010_{2} = 64 + 32 + 2 = 98. $$

Чому цей алгоритм працює?

Покажемо це на десятковій системі. Що насправді означають цифри в числі, наприклад у числі 7384? Цифра 4 показує кількість одиниць, цифра 8 — кількість десятків, цифра 3 — кількість сотень, а цифра 7 — кількість тисяч. Тому можемо записати, що

$$ 7384 = 7\cdot 1000 + 3\cdot100 + 8\cdot 10 + 4\cdot 1 $$

Цей вираз можна ще трохи змінити: щоб не використовувати числа 100, 10 і 1, а скрізь мати якийсь степінь десятки. Оскільки 100 = 1, 101 = 10 і так далі, можемо записати

$$ 7384 = 7\cdot 10^3 + 3\cdot10^2 + 8\cdot 10^1 + 4\cdot 10^0 $$

Кожне число в десятковій системі можна описати так само, а окремі доданки мають вигляд x · 10i, де x — цифра від 0 до 9 (таких цифр десять). Значення i — невід'ємне ціле число, яке показує розряд. Якщо i = 0, доданок показує одиниці, якщо i = 2 — сотні (бо 102 = 100).

Спробуймо тепер перевести число 7348 з десяткової системи в, е-е…, десяткову систему. Це матиме сенс. Число 7348 ділитимемо на 10:

$$\begin{eqnarray} 7348 : 10 &= 734 & \longrightarrow 8 \quad(\mbox{остача})\\ 734 : 10 &= 73 & \longrightarrow 4\\ 73 : 10 &= 7 & \longrightarrow 3\\ 7 : 10 &= 0 & \longrightarrow 7\\ \end{eqnarray}$$

Якщо прочитати остачі знизу, отримаємо число 7348 — початкове число, яке ми намагалися перевести в … ту саму систему.

Щоб описати двійкову систему, робимо абсолютно те саме — усі доданки матимуть вигляд x · 2i, де x — цифра 0 або 1. Значення i знову показує розряди. Так само як послідовне ділення на десять дає кількість розрядів у числі в десятковій системі, послідовне ділення на два дає кількість розрядів у двійковій системі.

Водночас зверни увагу: коли ми ділимо число на десять і дивимося на остачу, вона завжди лежить у проміжку [0; 9]. Якщо ділимо число на два, остача може бути або 0, або 1.

Переведення в інші системи

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

$$\begin{eqnarray} 185 : 16 &= 11 &\longrightarrow 9\quad(\mbox{остача})\\ 11 : 16 &= 0 &\longrightarrow 11 \end{eqnarray}$$

У шістнадцятковій системі число 185 мало б вигляд (11; 9). Замість «цифр» більших за 9 зазвичай використовують літери, тож 10 = A, 11 = B, 12 = C, … Отже, можемо записати, що число 185 у шістнадцятковій системі має вигляд B9.

Аналогічно можна перевести число B9 із шістнадцяткової системи в десяткову.

$$ B9_{16} = 11\cdot 16^1 + 9\cdot 16^0 = 11\cdot16+9=185 $$