Мой ответ: «Да очень просто!». Сейчас в каждом учебнике информатики
встречается такая тема, как «Перевод чисел из одной системы счисления в
другую», и особое внимание там уделяется именно двоичной системе
счисления. Но, несмотря на то, как хорошо там всё объяснено, мало кто
понимает. И в данной статье я постараюсь достаточно точно и чётко всё
объяснить. Итак, что же такое системы счисления? Системой
счисления называют способ записи чисел с помощью заданного набора
специальных знаков или цифр. В двоичной системе счисления всего два
таких знака, это 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. Записать полученные целые части произведения в прямой последовательности.
И напоследок хотелось бы рассказать о переводе чисел из восьмеричной и шестнадцатеричной систем счисления в двоичную.
Для перевода чисел из восьмеричной и шестнадцатеричной систем счисления
в двоичную необходимо цифры числа преобразовать в группы двоичных цифр.
Для перевода из восьмеричной системы в двоичную каждую цифру числа надо
преобразовать в группу из трёх двоичных цифр — триаду, а при
преобразовании шестнадцатеричного числа — в группу из четырёх цифр —
тетраду. И всё, как вы видите, всё очень просто!
Надеюсь, что прочитавшие мою статью смогут без проблем выполнять операции перевода, как это делаю я.