2015-01-24 2 views
1

значений с плавающей точкой (IEEE 32 и 64-бит) кодирует с использованием фиксированной длиной тупоконечником кодирования (7 бита используется, чтобы избежать использования зарезервированных байт, как 0xFF):7-битное кодирование значений с плавающей запятой?

, что пункты приходит от Smile Format spec (двоичный формат JSON).

Что это может означать? Существует ли стандартный способ кодирования IEEE floating point (одинарная и двойная точность), чтобы закодированные байты находились в диапазоне 0-127?

Больше, в общем: Я считаю, что в стандартном двоичном представлении нет зарезервированного или запрещенного байтового значения, число с плавающей запятой IEEE может включать в себя любой из 256 возможных байтов. Разумеется, существует ли какая-либо стандартная двоичная кодировка (или трюк), так что некоторые байты/s никогда не появятся (как, например, в кодировке UTF8 строк есть некоторые значения запрещенных байтов, как 0xFF)?

(я предполагаю, что будет означать либо потерять некоторую точность, или используя большее количество байтов.)

+2

Я ожидал бы «использование большего количества байтов», а не «использование большего количества бит». Если вы используете только 7 бит на байт, вам нужно больше байтов, чтобы поместиться в 64 бита, чем если бы вы использовали 8 бит на байт. –

+0

@PatriciaShanahan: Я думаю, что «использование 7 бит» на самом деле означает ограничение ваших байтов до диапазона 0-127 (сохранение MSB в нуле). Но, да, в конечном итоге это означало бы использование большего количества байтов. – leonbloy

ответ

2

Я не знаю подробности такого формата, но это выглядит как своего рода сериализации структуры данных. Конечно, поскольку конечный результат - это байт-поток, вы должны иметь возможность распознавать значение из других метаданных. Вероятно, они используют 7-й бит в специальном бите, поэтому следует избегать любого байтового значения неверного истолкования. В этом причина «распространения» номера IEEE fp вдоль (пять, для одного) байта, где для значения фактически используются только семь битов.

Я должен прочитать спецификации формата, поэтому я попытался «экстраполировать» то, что они собираются делать. Однако такой вид кодификации относительно часто применяется в низкоуровневом (например, встроенном) программировании.

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