• Мнения
  • |
  • Обсуждения
Денис Саликов Дебютант

Как переводить числа в двоичную систему счисления?

Мой ответ: «Да очень просто!» Сейчас в каждом учебнике информатики встречается такая тема, как «Перевод чисел из одной системы счисления в другую», и особое внимание там уделяется именно двоичной системе счисления. Но, несмотря на то, как хорошо там всё объяснено, мало кто понимает. И в данной статье я постараюсь достаточно точно и чётко всё объяснить.

Фото: Depositphotos

Итак, что же такое системы счисления?

Системой счисления называют способ записи чисел с помощью заданного набора специальных знаков или цифр.

В двоичной системе счисления всего два таких знака, это 0 и 1. Двоичная система счисления используется в вычислительных машинах. Выбор двоичной системы объясняется тем, что электронные элементы, из которых строились и строятся ЭВМ, могут находиться только в двух хорошо различимых устойчивых рабочих состояниях. Словом, эти элементы представляются нам в роли выключателей. А как мы все знаем, выключатель может быть включен или выключен. Третьего не дано. Одно из состояний выключателя обозначается 0, а другое — 1.

Итак, перейдём непосредственно к теме нашей статьи. Как же переводить числа из одной системы счисления в другую?

  • Развёрнутая запись двоичного числа может выглядеть так:

A = 1 • 22 + 0 • 21 + 1 • 20 + 0 • 2^(-1) + 1 • 2^(-2). (^ — знак степени).

А свёрнутая форма этого же числа выглядит уже так: А = 101,01.

В общем случае в двоичной системе запись числа А, которое содержит n целых разрядов и m дробных разрядов числа, выглядит так:
А = a (n-1) • 2^(n-1) + a (n-2) • 2^(n-2) +…a (0) • 20 + 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) • 21 + a (0) • 20.

На первом шаге разделим число А (цд) на основание двоичной системы, то есть на 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)…

Как переводить числа в двоичную систему счисления?
Фото: pixabay.com

А теперь алгоритм:

  1. Последовательно выполнять умножение исходной десятичной дроби и получаемых дробных частей произведений на основание системы (на 2) до тех пор, пока не получится нулевая дробная часть или не будет достигнута требуемая точность вычислений.
  2. Записать полученные целые части произведения в прямой последовательности.

И напоследок хотелось бы рассказать о переводе чисел из восьмеричной и шестнадцатеричной систем счисления в двоичную.

Для перевода чисел из восьмеричной и шестнадцатеричной систем счисления в двоичную необходимо цифры числа преобразовать в группы двоичных цифр. Для перевода из восьмеричной системы в двоичную каждую цифру числа надо преобразовать в группу из трёх двоичных цифр — триаду, а при преобразовании шестнадцатеричного числа — в группу из четырёх цифр, тетраду. И, как видите, всё очень просто!

Надеюсь, что прочитавшие мою статью смогут без проблем выполнять операции перевода, как это делаю я.

Статья опубликована в выпуске 3.02.2007
Обновлено 9.08.2021

Комментарии (7):

Чтобы оставить комментарий зарегистрируйтесь или войдите на сайт

Войти через социальные сети:

  • 1. Последовательно выполнять деление исходного целого десятичного числа и получаемых целых частных на основание системы (на 2) до тех пор, пока не получится частное, меньшее делителя, то есть меньше 2.
    2. Записать полученные остатки в обратной последовательности.


    Я бы сказал - пока не получится частное, равное нулю. Иначе вы теряете старший разряд.
    Например 5/2 = 2 ост. 1 2/2 = 1 ост 0 По вашему алгоритму 1 < 2 - остановка. А затем пишем остатки в обратном порядке - 01. Но это не пять, мы потеряли старшую единицу.
    5/2 = 2 ост. 1 2/2 = 1 ост 0 1/2 = 0 ост 1. Вот теперь частное 0 - остановка. А затем пишем остатки в обратном порядке - 101.

    Или оставить первый пункт как есть, а пункт два написать так:
    2. Записать полученные остатки в обратной последовательности, а слева добавить последнее частное.

    А в остальном - все отлично, это первая часть моей первой лекции по дисциплине "Введение в специальность" для специальности "Вычислительные машины"

  • Спасибо, что обратили внимание, принимаю статью.
    Только картинка должна быть цветная, убираю сюда ч/б.

    "Медаль, созданная Лейбницем, показывающая различия между двоичной и десятичной системой счисления:"

  • Статья полезная, и очень доходчиво написанная.
    Вот только такой перевод нужен очень малому количеству людей - максимум программистам. Необходимо его знание поступающим на Математические ВУЗы, хотя в разряде задач на поступление - такой тип - элементарщина, первый уровень.

    Оценка статьи: 4

  • Я не могу определить полезность статьи для читателей. Хотелось бы услышать мнение участников проекта. Описано все достаточно просто - для изучающих математику, а вот многим ли это нужно?

    • Математика есть гимнастика ума.

      Хотя полезнее само описание двоичной системы, чем именно алгоритм. Я бы перевела любое число в двоичную систему не зная алгоритма, а после прочтения почувствовала себя как сороконожка, которую спросили, с какой ноги она ходить начинает...

      Но в целом познавательные статьи по математике - дело хорошее. Приветствую!
      Надо подумать, не написать ли чего.

      Оценка статьи: 5