Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

Ralf07 Ученик (211), закрыт 11 лет назад
Надо перевести Допустим 1,25 * 10^3 в ЧПЗ в 2 с/с и 2,5 * 10^-1 в 2 с/с и выполнить их сложение в 2 с/с. Результат опять перевести в 10-ную. Как правильно переводить числа ЧПЗ с 10 в 2-ную? Как представлять мантиссу и порядок? Перевёл по разным способам и сложил и всегда разные неправильные ответы. (Пробовал: 1. Сначала нормализовывал в 10-ной потом переводил как прав дробь в двоичн. 2. Нормальзовывал и переводил мантиссу как целое число. 2. Переводил как неправильную дробь не нормализованную. И всё не получается)
Лучший ответ
Анатолий Артамонов Мастер (1445) 14 лет назад
Согласно правилу Гоpнеpа для двоичного числа X = 110101,011 можно записать:

X = 1*25 + 1*24 + 0*23 + 1*22 + 0*21 + 1*20 + 0*2-1 + 1*2-2 + 1*2-3 = 1*32 + 1*16 + 0*8 + 1*4 + 0*2 + 1*1 + 0*0,5 + 1*0,25 + 1*0,125.

Выполнив арифметические действия, получим десятичное число Х = 53,375, которое является десятичным эквивалент двоичного числа X = 110101,011. Таким образом, применив правило Гоpнеpа, мы осуществили преобразование двоичного числа к десятичной форме.

Несколько сложнее осуществляется обратное преобразование. Преобразования десятичного числа в двоичную форму проводится отдельно для целой и дробной частей числа.

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

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

Для примера преобразуем в двоичную форму целую и дробную части десятичного числа 456,35:
Увеличить
Результаты для целой части: 456 decimal = 111001000 binary, для дробной: 0,32 decimal = 0,01010001 binary, а окончательный pезультат:

456,32 decimal = 111001000,01010001 binary.

Нетрудно заметить, что целая часть десятичного числа пеpеводится к двоичной фоpме без погрешности, чего нельзя сказать о дробной части. Пpи обратном пеpеводе дpобной части двоичного числа в десятичную фоpму получим:

0,010100 binary = 0,25 + 0,0625 + 0,00390625 = 0,31640625 decimal.

Понятно, что пpи увеличении разрядности дробной части двоичного числа достигается уменьшение погрешности перевода. В большинстве случаев требуется перевод дробной части с точностью, не меньшей 16 бит. Для наших задач удовлетворительной представляется точность 8 бит.
Остальные ответы
Похожие вопросы