Як переводити числа в двійкову систему числення?
Моя відповідь: «Та дуже просто!». Зараз в кожному підручнику інформатики зустрічається така тема, як «Переклад чисел з однієї системи числення в іншу», і особливу увагу там приділяється саме двійковій системі числення. Але, незважаючи на те, як добре там все пояснено, мало хто розуміє. І в даній статті я постараюся досить точно і чітко все пояснити.
Отже, що ж таке системи числення? Системою числення називають спосіб запису чисел за допомогою заданого набору спеціальних знаків або цифр. У двійковій системі числення всього два таких знака, це 0 і 1. Двійкова система числення використовується в обчислювальних машинах. Вибір двійкової системи пояснюється тим, що електронні елементи, з яких будувалися і будуються ЕОМ, можуть перебувати лише у двох добре помітних стійких робочих станах. Словом, ці елементи представляються нам у ролі вимикачів. А як ми всі знаємо, вимикач може бути включений або виключений. Третього не дано. Одне з станів вимикача позначається 0, а інше - 1.
Отже, перейдемо безпосередньо до теми нашої статті. Як же переводити числа з однієї системи числення в іншу? Розгорнута запис двійкового числа може виглядати так:
A = 1 • 2 ^ 2 + 0 • 2 ^ 1 + 1 • 2 ^ 0 + 0 • 2 ^ (- 1) + 1 • 2 ^ (- 2). (^ - Знак ступеня). А згорнута форма цього ж числа виглядає вже так: А = 101,01. У загальному випадку в двійковій системі запис числа А, яке містить n цілих розрядів і m дрібних розрядів числа, виглядає так:
А = a (n-1) • 2 ^ (n-1) + a (n-2) • 2 ^ (n-2) + ... a (0) • 2 ^ 0 + a (-1) • 2 ^ (-1) + ... a (-m) • 2 ^ (- m).
Коефіцієнт a (i) у цій записи є цифрами (0 або 1) двійкового числа, яке в згорнутої формі записується так:
A = a (n-1) a (n-2) ... a (0), a (-1) a (-2) a (-m).
Тепер я надаю вашій увазі алгоритм перекладу цілих десяткових чисел в двійкову систему числення.
Нехай А (ЦД) - ціле десяткове число. Запишемо його у вигляді суми ступенів підстави 2 з двійковими коефіцієнтами. У його записі в розгорнутій формі будуть відсутні негативні ступеня підстави (числа 2):
A (цд) = a (n-1) • 2 ^ (n-1) + a (n-2) • 2 ^ (n-2) + ... + a (1) • 2 ^ 1 + a (0) • 2 ^ 0.
На першому кроці розділимо число А (цд) на основу двійкової системи, тобто на 2. Частка від ділення буде одно:
a (n-1) • 2 ^ (n-2) + a (n-2) • 2 ^ (n-3) + ... + a (1), а залишок дорівнює a (0).
На другому кроці ціле приватне знову розділимо на 2, залишок від ділення буде тепер дорівнює a (1).
Якщо продовжувати цей процес поділу, то після n-го кроку отримаємо послідовність залишків:
a (0), a (1), ..., a (n-1).
Легко помітити, що їх послідовність збігається зі зворотним послідовністю цифр цілого двійкового числа, записаного в згорнутої формі:
A (2) = a (n-1) ... a (1) a (0).
Таким чином, досить записати залишки в зворотній послідовності, щоб отримати шукане двійкове число.
Тоді сам алгоритм буде наступним:
1. Послідовно виконувати поділ вихідного цілого десяткового числа і одержуваних цілих приватних на основу системи (на 2) до тих пір, поки не вийде приватне, менше дільника, тобто менше 2.
2. Записати отримані залишки в зворотній послідовності, а ліворуч додати останнє приватне.
А тепер розглянемо алгоритм перекладу правильних десяткових дробів в
двійкову систему числення.
Нехай А (дд) - правильна десятковий дріб. У її записи в розгорнутій формі будуть відсутні позитивні ступеня підстави (числа 2):
A (дд) = a (-1) • 2 ^ (- 1) + a (-2) • 2 (-2) + ...
На першому кроці помножимо число A (дд) на основу двійкової системи, тобто на 2. Твір буде одно:
a (-1) + a (-2) • 2 ^ (- 1) + ... Ціла частина буде дорівнює a (-1).
На другому кроці залишилася дробову частину знову помножимо на 2, отримаємо цілу частину, рівну a (-2).
Описаний процес необхідно продовжувати до тих пір, поки в результаті множення ми не отримаємо нульову дробову частину або не буде досягнута необхідна точність обчислень.
І тут легко помітити, що послідовність отриманих чисел збігається з послідовністю цифр дрібного двійкового числа, записаного в згорнутої формі: A (2) = a (-1) a (-2) ...
А тепер алгоритм:
1. Послідовно виконувати множення вихідної десяткового дробу і одержуваних дрібних частин творів на основу системи (на 2) до тих пір, поки не вийде нульова дробова частина або не буде досягнута необхідна точність обчислень.
2. Записати отримані цілі частини твору у прямій послідовності.
І наостанок хотілося б розповісти про переведення чисел з вісімковій і шістнадцятковій систем числення в двійкову.
Для переведення чисел із вісімковій і шістнадцятковій систем числення в двійкову необхідно цифри числа перетворити в групи двійкових цифр. Для переведення з вісімковій системи в двійкову кожну цифру числа треба перетворити в групу з трьох довічних цифр - тріаду, а при перетворенні шістнадцятирічного числа - до групи з чотирьох цифр - тетраду. І все, як ви бачите, все дуже просто!
Сподіваюся, що прочитали мою статтю зможуть без проблем виконувати операції переказу, як це роблю я.