Преобразование между стандартами с плавающей точкой - PullRequest
3 голосов
/ 19 октября 2010

Я пытаюсь преобразовать число с плавающей запятой на основе IEEE в число с плавающей запятой MIL-STD 1750A.

Я приложил спецификацию для обоих: alt text

Я понимаю, какразложить с плавающей запятой 12.375 в формате IEEE в соответствии с примером в Википедии.

Однако я не уверен, верна ли моя интерпретация MIL-STD.

12.375 = (12) b10 + (0.375) b10 = (1100) b2 + (0.011) b2 = (1100.011) b2 (1100.011) b2 = 0.1100011 x 2 ^ 4 => экспонента, E = 4.

4 в дополнении к нормализованному 2 равно = (100) b2 = экспонента

Следовательно, 32-битное число с плавающей запятой MIL-STD 1750A имеет вид:

S=0, F=11000110000000000000000, E=00000100

Моя интерпретация вышеправильно?

Для -12,375, это только знаковый бит, который меняет местами? т.е.:

S=1, F=11000110000000000000000, E=00000100

Или что-то смешное происходит с дробной частью

1 Ответ

4 голосов
/ 19 октября 2010

Диаграмма выше немного вводит в заблуждение, я думаю.В формате IEEE, чтобы переключиться с положительного на отрицательный, вы просто переворачиваете первый бит.Оставшиеся три бита можно рассматривать как число без знака.В формате MIL-STD мантисса - это число с дополнением до двух, поэтому, хотя первый бит указывает на знак, оставшиеся 23 бита не остаются неизменными.*

...