ГОСТ Р ИСО/МЭК 8825-1-2003
Следовательно, для правильного размещения точки в М значением М должно быть N, умноженное на 23. (Подразумеваемое положение в N— после бита 1 октета 5). Таким образом, получаем основные параметры:
F = 3 (так что ff= 11),
декремент экспоненты равен 9.
С.4 Длина, необходимая для экспоненты, вычисляется через максимальное число октетов, необходимых для представления значений:
-Ё'тщ — избыток — декремент экспоненты;
Етах — избыток — декремент экспоненты,
где Етin и Етах — минимальное и максимальное целые значения представления экспоненты, избыток — любое значение, которое нужно вычесть для получения правильного значения экспоненты, а декремент экспоненты вычислен в С.3. Пусть это вычисление дает длину 3 октета. Тогда ее равно 10. Примем также, что избыток равен нулю.
С.5 Алгоритм пересылки теперь такой:
а) передать поле октетов идентификатора объекта базовых правил кодирования с тегом АСН.1 для действительного типа;
б) проверить на равенство нулю и, если это так, передать поле длины базовых правил кодирования АСН. 1 со значением 0 (нет октетов содержимого) и завершить алгоритм;
в) проверить и запомнить знак мантиссы;
г) передать поле длины базовых правил кодирования АСН.1 со значением 9, имеющее вид:
11101110, если отрицательное, или
10101110, если положительное;
д) создать и передать 4 октета экспоненты со значением Е — 9;
е) обнулить биты 8—3 октета 1 и биты 4—1 октета 5, а затем передать 5 октетов мантиссы.
С.6 Должен быть подготовлен алгоритм получения для обработки любого базового кодирования АСН.1, но здесь может быть непосредственно использована единица с плавающей точкой. Алгоритм такой:
а) проверить октет 1 содержимого; если он равен 1x101110, то отправление совместимо с получением и можно просто обратить алгоритм отправления;
б) в противном случае, для символьного кодирования, вызвать стандартную процедуру преобразования десятичных символов в число с плавающей точкой и работать со «SpecialRealValue» в соответствии с прикладной семантикой (возможно, потребуется установка наибольшего и наименьшего обрабатываемого числа с плавающей точкой);
с) для двоичной передачи — поместить N в единицы с плавающей точкой, отбросить, если необходимо, октеты с менее значащего конца, умножить на 2F и на ВЕи, если нужно, сделать отрицательным. Реализаторы могут найти возможные в специальных случаях оптимизации, но может оказаться (кроме оптимизаций, относящихся к преобразованиям на совместимых машинах), что потери от них будут больше выигрыша.
С.7 Приведенный выше алгоритм служит лишь иллюстрацией. Реализаторы должны определять собственные наилучшие стратегии.
24