ГОСТ Р ИСО/МЭК 8825-3—2016
NormallySmallValuesTag-encoding-plus-PER «ENCODINGS ::= {normallySmallValuesTag-encoding}
COMPLETED BY PER-BASIC-UNALIGNED
D.2.2.3 Присвоением структуры кодирования является:
#NormallySmallValuesStruct2 ::= «CHOICE {
small [#TAG(0)j «INT (0..63).
large [#TAG(1)J #INT (0..MAX) }
D.2.2.4 Результат очень похож на D.2.1, но теперь значения свыше 64. которые отображаются в поле «large»,
кодируются от нуля и выше. Две альтернативы различаются с помощью однобитового индекса. Другое отличие
состоит в том. что поле «largeo остается неограниченным, так что этот объект кодирования может кодировать про
извольно большие целые числа, но за счет длинного поля в случае «large». Этот пример может использоваться
также, когда нет верхней границы для значений, которые могли бы появляться изредка («large» не ограничено в
структурах замены). Это опять иллюстрирует гибкость, доступную для проектировщиков ECN при разработке коди
рования. удовлетворяющего их конкретным требованиям.
D.2.3 Компрессия прерывистых диапазонов значений
D.2.3.1 Этот пример также использует отображение упорядоченных абстрактных значений. В этом случае
отображение используется для компрессии разбросанных значений в некоторую базовую спецификацию АСН.1.
Компрессия могла бы достигаться также путем определения
в
АСН.1 абстрактного значения «х». имеющего при
кладную семантику «2х», а затем используя более простое ограничение целочисленного типа АСН.1. В этом при
мере. однако, предполагается, что разработчик АСН.1 решил не делать этого, а нам необходимо применить ком
прессию во время отображения из абстрактных значений в кодовые последовательности.
D.2.3.2 Присвоение АСН.1 равно:
SparseEvenlyDistributedValueSet ::= INTEGER (2 | 4 | 6 | 8 | 10 | 12 | 14 | 16)
D.2.3.3 Кодирование PER basic unaligned применяет нижние и верхние границы тольхо при определении числа
битов, необходимых для кодирования целого числа. Это приводит к неиспользуемым комбинациям битов в кодовой
последовательности. Такая кодовая последовательность может быть компрессирована, чтобы неиспользуемые ком
бинации битов были опущены, а каждое значение кодировалось с использованием минимального числа битов.
D.2.3.4 Присвоением объекта кодирования (см. 19.5) является:
sparseEvenlyDistributedValueSetEncoding SparseEvenlyDistributedValueSet ::= {
USE «lntFromOTo7
MAPPING ORDERED VALUES
WITH PER-BASIC-UNALIGNED}
«lntFromOTo7#INT (0..7)
D.2.3.5 Восемь возможных абстрактных значений отображены в диапазон 0—7 и будут кодироваться в трех
битовом поле.
D.2.4 Компрессия прерывных диапазонов значений с помощью преобразователя
D.2.4.1 В примере D.2.3 использовалось отображение упорядоченных абстрактных значений. Такой же эф
фект может быть достигнут при использовании класса «TRANSFORM
D.2.4.2 Присвоением объекта кодирования (см. 19.4) является:
sparseEvenlyDistributedValueSetEncoding-2 «SparseEvenlyDistributedValueSet ::= {
USE #lntFromOTo7
MAPPING TRANSFORMS {{INT-TO-INT divide: 2}. {INT-T04NT decrement:1}}
WITH PER-BASIC-UNALIGNED}
D.2.4.3 Опять восемь возможных абстрактных значений отображаются в диапазон 0—7 и кодируются в трех
битовом поле.
D.2.5 Компрессия неравномерно распределенного набора значений с помощью упорядоченных аб
страктных значений
D.2.5.1 Присвоение АСН.1 равно:
SparseUnevenlyDistributedValueSet ::= INTEGER (0|3|5|6|11|8)
-
В беспорядке
—
для иллюстрации того, что порядок следования не важен в таком ограничении.
D.2.5.2 Кодирование должно быть таким, чтобы не было пропусков в используемых кодовых комбинациях.
176