Как перевести вещественное число в двоичную систему
Перейти к содержимому

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

  • автор:

2. Перевод дробных чисел из десятичной системы счисления в любую другую систему счисления

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

Делим число на основание системы счисления, в которую необходимо перевести, при этом записывая в обратном порядке остатки, из которых складывается искомое число.

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

1. перевести число \(58,14\) из десятичной системы счисления в двоичную систему счисления.

Следуя алгоритму, переводим сначала целую часть десятичного числа \(58\) в двоичную систему счисления. Делим его последовательно на основание искомой системы счисления — \(2\). Получаем число \(111010\). Следующим шагом переводим дробную часть \(0,14\) от десятичного числа, отбросив целую часть. Умножаем последовательно число на основание искомой системы счисления — \(2\). Умножаем до тех пор, пока не получим единицу в целой части. Записываем выделенные на схеме числа в прямом порядке и получаем в итоге двоичное число \(111010,001\).

1.png

2. перевести число \(58,14\) из десятичной системы счисления в шестнадцатеричную систему счисления.

Следуя алгоритму, переводим сначала целую часть десятичного числа \(58\) в шестнадцатеричную систему счисления. Делим его последовательно на основание искомой системы счисления — \(16\). Получаем число 3 A . Следующим шагом переводим дробную часть \(0,14\) от десятичного числа, отбросив целую часть. Умножаем последовательно дробную часть на основание искомой системы счисления — \(16\). Умножаем до тех пор, пока не получим ноль в целой части. Записываем выделенные на схеме числа в прямом порядке и получаем в итоге шестнадцатеричное число \(3A,23D7\).

ДРОБНЫЕ ЧИСЛА В ДВОИЧНОЙ СИСТЕМЕ СЧИСЛЕНИЯ

В любой системе счисления нужно уметь представлять не только целые числа, но и дробные. С математической точки зрения это ординарная задача, которая давно решена. Однако с точки зрения компьютерной техники это далеко не тривиальная проблема, во многом связанная с архитектурой компьютера. Ресурсы компьютеров не бесконечны, и основной трудностью является представление периодических и непериодических дробей. Следовательно, такие дроби следует округлять, задавать класс точности участвующих (и могущих появиться в результате вычислений!) чисел без потери точности вычислений, а также следить за тем, чтобы потеря точности не произошла при переводе чисел из одной системы счисления в другую. Особенно важно аккуратно производить вычисления при операциях с плавающей точкой.

Запишем формулу представления дробного числа в позиционной системе счисления:

Ap = an-1·p n-1 +an-2·p n-2 + . + a1·p 1 +a0·p 0 +a-1·p -1 +a-2·p -2 + . + a-m·p -m , [4.1]

В случае десятичной системы счисления получим:

24,732 = 2·10 1 +4·10 0 +7·10 -1 +3·10 -2

Перевод дробного числа из двоичной системы счисления в десятичную производится по следующей схеме:

101101,1012 = 1·2 5 +0·2 4 +1·2 3 +1·2 2 +0·2 1 +1·2 0 +1·2 -1 +0·2 -2 +1·2 -3 =45,625

Перевод дробного числа из десятичной системы счисления в двоичную осуществляется по следующему алгоритму:

Пример: Требуется перевести дробное десятичное число 206,116 в дробное двоичное число.

Перевод целой части дает 20610=110011102 по ранее описанным алгоритмам; дробную часть умножаем на основание 2, занося целые части произведения в разряды после запятой искомого дробного двоичного числа:

.116 • 2 = 0.232 .232 • 2 = 0.464 .464 • 2 = 0.928 .928 • 2 = 1.856 .856 • 2 = 1.712 .712 • 2 = 1.424 .424 • 2 = 0.848 .848 • 2 = 1.696 .696 • 2 = 1.392 .784 • 2 = 0.784 и т.д.

Получим: 20610=11001110,00011101102

Таблицу степеней первых восьми отрицательных степеней двойки можно посмотреть в Приложении.

Перевод дробных чисел из одной системы счисления в другую

После того, как я сделал несколько калькуляторов для перевода между разными системами счисления — вот список от первой до последней версии, от самого простого к сложному: Перевод числа в другие системы счисления, Перевод из десятичной системы счисления, Перевод из одной системы счисления в другую — в комментариях стали периодически спрашивать — а что же, мол, дробные числа, как же их переводить? И когда спросили больше трех раз, я таки решил изучить этот вопрос.

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

Перевод дробных чисел из одной системы счисления в другую

Исходное число
Исходное основание
Основание системы счисления исходного числа
Основание результата
Основание системы счисления переведенного числа
Точность вычисления
Знаков после запятой: 8
Рассчитать
Переведенное число
Исходное число в десятичной системе счисления
Переведенное число в десятичной системе счисления
Погрешность перевода (в десятичном выражении)
Максимальная погрешность перевода (в десятичном выражении)
Ссылка Сохранить Виджет

Теперь теория. Я, честно говоря, думал, что вопрос довольно сложный, но при ближайшем рассмотрении все оказалось проще простого. Надо было только держать в голове тот факт, что речь идет о позиционных системах счисления.
В чем тут суть? Рассмотрим на примере десятичного числа 6.125. Это дробное число в десятичной системе счисления представляется так:

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

Да-да, число для примера было выбрано не просто так. То есть, 110.001 в двоичной системе есть 6.125 в десятичной. Принцип, я думаю, ясен.

Есть только одно но — все-таки из-за того, что здесь участвую дроби с разными знаменателями, не всегда одно и тоже число можно одинаково точно выразить в разных системах счисления. Что я имею в виду?

Возьмем, например, число . Отлично смотрится в десятичной системе счисления. Но вот если попробовать получить запись этого числа в двоичной системе счисления — будут проблемы. Попробуем, пока не устанем

Продолжать можно еще довольно долго, но уже сейчас видно, что 0.8 в десятичной системе это 0.11001100. (дальше очень много цифр) в двоичной. Если честно, то это периодическое число с перидом 1100, так что мы никогда не сможем выразить его точно в двоичной системе счисления. 110011001100. будет продолжаться до бесконечности.

Поэтому перевод дробного числа из одной системы счисления в другую чаще всего дает погрешность. Погрешность эта зависит от того, сколько разрядов мы используем для записи дробной части переведенного числа. Возьмем пример с числом 0.8 и используем для записи его двоичного представления шесть разрядов после запятой — 0.110011. Полученное число вовсе не 0.8, а 0.796875, разница при этом составляет 0.003125. Это и есть наша погрешность перевода десятичного числа 0.8 в двоичный вид при использовании шести разрядов после запятой.

Вес крайнего правого разряда (самого младшего разряда) называется разрешением (resolution) или точностью (precision), и определяет наименьшее неравное нулю число, которое может быть представлено данным числом разрядов. Для нашего примера это . При этом максимально возможная погрешность представления числа, как нетрудно сообразить, не превышает половины этого веса, или 0.0078125. Так что для 0.8 мы имеем еще и не самую плохую погрешность.

Вот, собственно, и все.

Перевод из десятичной системы счисления в двоичную

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

Вы делитесь ссылкой на статичный расчет. При изменении вами расчета, изменения не будут транслироваться по ссылке.

Как перевести

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

  1. Делим десятичное число на 2 и записываем остаток от деления.
  2. Результат деления вновь делим на 2 и опять записываем остаток.
  3. Повторяем операцию до тех пор пока результат деления не будет равен нулю.
  4. Запишем полученные остатки в обратном порядке и получим искомое число.

Переведем число 37510 в двоичную систему:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *