Есть ли 32-битные представления с плавающей запятой, кроме IEEE754? - PullRequest
0 голосов
/ 24 мая 2018

Предисловие:

В настоящее время я пытаюсь расшифровать старый двоичный формат (разработанный в середине-конце 1980-х годов в Японии), в котором значения с плавающей запятой хранятся в 4-байтовых блоках, которыене конвертируются по стандарту IEEE754.У меня есть программа, которая преобразует значения для меня, поэтому я могу манипулировать двоичным файлом, чтобы изменить сохраненные значения и увидеть результат, но я не могу понять, как их интерпретировать.

Я интерпретировал каждыйвозможная перестановка 4 байтов в виде числа с плавающей запятой IEEE, но ни один из них не является правильным, поэтому я могу сказать, что это не проблема порядка байтов и не является представлением числа с плавающей запятой, которое я знаю или могу найти в Интернете.

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

Вот несколько примеров:

  • A0 78 2D 00 = 298.
  • A0 78 2D 01 = 1975.7
  • A0 78 2D 02 =3653,4
  • A0 78 2C 00 = 291,4
  • A0 78 2C 02 = 3646,8

Актуальный вопрос:

АреСуществуют ли другие (старые) 32-битные представления с плавающей запятой, которые / где используются помимо / до стандарта IEEE754?

1 Ответ

0 голосов
/ 24 мая 2018

Это не представление с плавающей запятой, а представление с фиксированной запятой.Двоичные 4-байтовые блоки представляют собой 32-разрядные целые числа с прямым порядком байтов, представляющие значение с плавающей запятой , умноженное на 10000:

Byte repr.   int hexa   int dec. int val / 10000.
A0 78 2D 00  0x002d78a0  2980000 298.0
A0 78 2D 01  0x012d78a0 19757216 1975.7216
A0 78 2D 02  0x022d78a0 36534432 3653.4432
A0 78 2C 00  0x002c78a0  2914464 291.4464
A0 78 2C 02  0x022c78a0 36468896 3646.8896

Это обычно используется для представления десятичных чисел, когда точность установлена ​​и когдаВы хотите точные операции, например, для представления валют

...