Денис Саликов Денис Саликов Дебютант Опубликовано 3.02.2007      7     186084     Распечатать

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

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

Итак, что же такое системы счисления? Системой счисления называют способ записи чисел с помощью заданного набора специальных знаков или цифр. В двоичной системе счисления всего два таких знака, это 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. Записать полученные целые части произведения в прямой последовательности.

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

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

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

Теги: математика, обучение
7 комментариев (посмотреть последние комментарии)
А кто не понял, может и на калькуляторе посчитать...
А кто не понял, может и на калькуляторе посчитать...

Ссылки по теме

Рейтинг статьи Ваша оценка
Подробнее

Поделиться

Читайте статьи в рубрике «Обучение»

Обсуждение статьи:

  • Марианна Власова Марианна Власова Бывший главный редактор 21 января 2007 в 00:56   # Ответить 0 +1

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

    • К. Ю. Старохамская К. Ю. Старохамская Грандмастер 1 февраля 2007 в 01:15   # Ответить 0 +1

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

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

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

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

      • Владимир Кузнецов Владимир Кузнецов Дебютант 24 октября 2007 в 13:40   # Ответить 0 +1

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

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

  • Олег Агаев Олег Агаев Мастер 31 января 2007 в 23:45   # Ответить 0 +1

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

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

  • Марианна Власова Марианна Власова Бывший главный редактор 1 февраля 2007 в 08:28   # Ответить 0 +1

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

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

  • Олег Антонов Олег Антонов Аксакал 25 февраля 2007 в 15:01   # Ответить 0 +1

    Комментарий был удален

Посмотреть все комментарии (7)

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

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