2013-04-23 6 views
0

У меня есть домашнее задание следующим образом:.Преобразование одинарной точности с плавающей точкой до половины точности MIPS

«Осуществить половину точности сложения с плавающей запятой в MIPS ассемблере строки пользователя ввода два точек (десятичное) число и вычислить с плавающей и отображать сумму.

в половине точности формате, 16 бит используется для представления числа с плавающей точкой. поле экспоненты 5 бит в ширине, а поле мантиссы имеет 10 бит.

Вам нужно будет преобразовать сингл число с плавающей точкой с точностью до полуточности с плавающей запятой nu и затем выполнить ваши расчеты ».

Как мне перейти на преобразование с плавающей точкой с плавающей точкой с точностью до полуточности в MIPS?

ответ

2

Для преобразования IEEE-754 32-битовый двоичный объект с плавающей точкой в ​​16-битном:

  • отдельные поля знак, показатель степени и значащих.
  • Если число представляет собой NaN (показатель экспоненты - все один бит, а значение - отличное от нуля), верните NaN. (Используйте один и тот же бит знака, установите поле экспоненты для всех, установите высокий бит нового значащего слова в бит бит старого значения [обычно используется для обозначения сигнализации/тишины] и сохраняйте любые другие биты старый значащий вам нравится, если новое значение не равно нулю.)
  • Если поле экспоненты не все нули, добавьте 2 в поле значимости. Если поле экспоненты равно нулю, добавьте 1 к нему. (Этот шаг нормализует субнормальные числа.)
  • Вычитает 127 из экспоненты, чтобы удалить смещение 32-битного формата и добавить 15, чтобы добавить смещение 16-битного формата.
  • Если поле экспоненты меньше -11, возвращаем ноль, с тем же знаком, что и вход.
  • Если поле экспоненты меньше 1: установите временное значение для значения, сдвинутого влево на количество бит, равное 1 минус поле экспоненты. Сдвиньте значение справа от числа бит плюс 13. Если временное значение превышает 2 , добавьте его в поле значимости (для округления). Если это добавление не увеличивает значение до 2 , установите экспоненту в ноль и верните субнормальное число (или ноль), сформированное из знакового бита, показатель нуля и значение. Если значение увеличилось до 2 , верните число, сформированное из знакового бита, поле экспоненты единицы и значение с нулевым значением.
  • Если низкие 13 бит мантиссы превышают 2 или они равны 2 и следующие более высокие бит равен 1, добавляют 2 к мантиссе. Сдвиньте значимые правые 13 бит. Если он не меньше 2 , добавьте его к экспоненте и сдвиньте значение справа один бит.
  • Если поле экспоненты больше 30, возвращайте бесконечность с тем же знаком, что и вход.
  • В противном случае верните нормальное число, сформированное из знакового бита, экспонента и младших десяти бит значения.

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

Смежные вопросы