Другие языки программирования и технологии

Как перевести дробное десятичное число в двоичное. С плавающей запятой.

SS
Serg Ska
70
Перевод из десятичной в произвольную позиционную систему счисления
Целая часть
1. Последовательно делить целую часть десятичного числа на основание, пока десятичное число не станет равно нулю.
2. Полученные при делении остатки являются цифрами нужного числа. Число в новой системе записывают, начиная с последнего остатка.
Дробная часть
1. Дробную часть десятичного числа умножаем на основание системы, в которую требуется перевести. Отделяем целую часть. Продолжаем умножать дробную часть на основание новой системы, пока она не станет равной 0.
2. Число в новой системе записывают, начиная с последнего остатка, как при целой части.

Пример
44(10) переведём в двоичную систему
44 делим на 2. частное 22, остаток 0
22 делим на 2. частное 11, остаток 0
11 делим на 2. частное 5, остаток 1
5 делим на 2. частное 2, остаток 1
2 делим на 2. частное 1, остаток 0
1 делим на 2. частное 0, остаток 1
Частное равно нулю, деление закончено. Теперь записав все остатки снизу вверх получим число 101100(2)

Для перевода дробной части числа в другие системы счисления нужно обратить целую часть в нуль и начать умножение получившегося числа на основание той системы, в которую нужно перевести. Если в результате умножения будут снова появляться целые части, их нужно повторно обращать в нуль, предварительно запомнив (записав) значение получившейся целой части. Операция заканчивается, когда дробная часть полностью обратится в нуль. Ниже приводится пример перевода числа 103,625(10) в двоичную систему счисления.

Переводим целую часть по правилам, описанным выше, получаем 103(10) = 1100111(2).
0,625 умножаем на 2. Дробная часть 0,250. Целая часть 1.
0,250 умножаем на 2. Дробная часть 0,500. Целая часть 0.
0,500 умножаем на 2. Дробная часть 0,000. Целая часть 1.
Итак, сверху вниз получаем число 101(2)
103,625(10) = 1100111,101(2)

Точно также осуществляется перевод в системы счисления с любым основанием.
Сразу нужно отметить, что этот пример специально подобран, в общем случае очень редко удаётся завершить перевод дробной части числа из десятичной системы в другие системы счисления, а потому, в подавляющем большинстве случаев, перевод можно осуществить с какой либо долей погрешности. Чем больше знаков после запятой — тем точнее приближение результата перевода к истине. В этих словах легко убедиться, если попытаться, например, перевести в двоичный код число 0,626.

ps: насчет плавающей запятой тоже просто
Формат чисел с плавающей запятой базируется на экспоненциальной форме записи, в которой может быть представлено любое число. Так число А может быть представлено в виде: A=m*n^q, где m - мантисса числа; q - основание системы счисления;
n - порядок числа.
Такая форма записи имеет недостаток: некоторые числа записываются неоднозначно (например, 0,0001 можно записать в 4 формах — 0,0001×10^0, 0,001×10^−1, 0,01×10^−2, 0,1×10^−3), поэтому распространена (особенно в информатике) также другая форма записи — нормализованная, в которой мантисса десятичного числа принимает значения от 1 (включительно) до 10 (не включительно) , а мантисса двоичного числа принимает значения от 1 (включительно) до 2 (не включительно) . В такой форме любое число (кроме 0) записывается единственным образом. Недостаток заключается в том, что в таком виде невозможно представить 0, поэтому представление чисел в информатике предусматривает специальный признак (бит) для числа 0.
Это означает, что мантисса должна быть правильной дробью и иметь после запятой цифру, отличную от нуля.
Преобразуем десятичное число 555,55, записанное в естественной форме, в экспоненциальную форму с нормализованной мантиссой:
555,55 = 0,55555 × 10³ .
Здесь нормализованная мантисса: m = 0,55555, порядок: n = 3.
http://www.5byte.ru/11/0008.php
UB
Ulan Baryktabasov
59 875
Лучший ответ
Формат хранения вещественных чисел в разных языках разный, но во всяком случае такого
маразма как дробные двоичные числа на самом деле в природе не существует. Для каждого такого числа вычисляется мантисса и экспонента, и они сжимаются определенным образом.
В уме или на бумажке перевести вещественное число в двоичную форму не получится.
Max ...
Max ...
91 134
Требуется перевести дробное десятичное число 206,116 в дробное двоичное число.
Перевод целой части дает 206=11001110(для этого мы делим 206 на два и записываем остатки от деления) , затем дробную часть умножаем на основание 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
Получим: 206=11001110,0001110110
Давай число.
Дано дробное число 11101001,011 в двоичной системе счисления. Найдите его нормализованную мантиссу и порядок в двоичной системе счисления. Напишите пример ненормализованной мантиссы для данного числа в двоичной системе счисления.
93,125
44(10) переведём в двоичную систему
44 делим на 2. частное 22, остаток 0
22 делим на 2. частное 11, остаток 0
11 делим на 2. частное 5, остаток 1
5 делим на 2. частное 2, остаток 1
2 делим на 2. частное 1, остаток 0
1 делим на 2. частное 0, остаток 1
Частное равно нулю, деление закончено. Теперь записав все остатки снизу вверх получим число 101100(2)

Похожие вопросы