Итак, что же такое системы счисления?
Системой счисления называют способ записи чисел с помощью заданного набора специальных знаков или цифр.
В двоичной системе счисления всего два таких знака, это 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).
Таким образом, достаточно записать остатки в обратной последовательности, чтобы получить искомое двоичное число.
Тогда сам алгоритм будет следующим:
- Последовательно выполнять деление исходного целого десятичного числа и получаемых целых частных на основание системы (на 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)…
А теперь алгоритм:
- Последовательно выполнять умножение исходной десятичной дроби и получаемых дробных частей произведений на основание системы (на 2) до тех пор, пока не получится нулевая дробная часть или не будет достигнута требуемая точность вычислений.
- Записать полученные целые части произведения в прямой последовательности.
И напоследок хотелось бы рассказать о переводе чисел из восьмеричной и шестнадцатеричной систем счисления в двоичную.
Для перевода чисел из восьмеричной и шестнадцатеричной систем счисления в двоичную необходимо цифры числа преобразовать в группы двоичных цифр. Для перевода из восьмеричной системы в двоичную каждую цифру числа надо преобразовать в группу из трёх двоичных цифр — триаду, а при преобразовании шестнадцатеричного числа — в группу из четырёх цифр, тетраду. И, как видите, всё очень просто!
Надеюсь, что прочитавшие мою статью смогут без проблем выполнять операции перевода, как это делаю я.
Я не могу определить полезность статьи для читателей. Хотелось бы услышать мнение участников проекта. Описано все достаточно просто - для изучающих математику, а вот многим ли это нужно?
0 Ответить
Математика есть гимнастика ума.
Хотя полезнее само описание двоичной системы, чем именно алгоритм. Я бы перевела любое число в двоичную систему не зная алгоритма, а после прочтения почувствовала себя как сороконожка, которую спросили, с какой ноги она ходить начинает...
Но в целом познавательные статьи по математике - дело хорошее. Приветствую!
Надо подумать, не написать ли чего.
Оценка статьи: 5
0 Ответить
Я бы перевела любое число в двоичную систему не зная алгоритма, а после прочтения почувствовала себя как сороконожка, которую спросили, с какой ноги она ходить начинает...
удачное и точное сравнение
Оценка статьи: 2
0 Ответить
Статья полезная, и очень доходчиво написанная.
Вот только такой перевод нужен очень малому количеству людей - максимум программистам. Необходимо его знание поступающим на Математические ВУЗы, хотя в разряде задач на поступление - такой тип - элементарщина, первый уровень.
Оценка статьи: 4
0 Ответить
Спасибо, что обратили внимание, принимаю статью.
Только картинка должна быть цветная, убираю сюда ч/б.
"Медаль, созданная Лейбницем, показывающая различия между двоичной и десятичной системой счисления:"
0 Ответить
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. Записать полученные остатки в обратной последовательности, а слева добавить последнее частное.
А в остальном - все отлично, это первая часть моей первой лекции по дисциплине "Введение в специальность" для специальности "Вычислительные машины"
0 Ответить
Спасибо, уточнила второй пункт.
0 Ответить