ГОСТ Р ИСО/МЭК 8825-2-2003
честве октетов имеет ширину поля, кратную восьми битам, и удовлетворяет условию, что головные
восемь битов поля не равны нулю или единице одновременно.
П р и м е ч а н и е —Это яшяется необходимым и достаточным условием дня создания единственного
кодирования.
10.5Кодирование ограниченного целого числа
П р и м е ч а н и е — На настоящий подраздел ссылаются другие разделы, а сам он ссылается на предыду
щие подразделы при создании неотрицательного двоичного целого или двоично-дополнительного до 2 целого
кодирования. Ятя варианта UNALIGNED значение всегда кодируется в минимальном количестве
битов, необходимом для представлении диапазона (определенного в 10.5.3). Остальная часть настоящего
примечания относится к варианту ALIGNED. Когда диапазон меньше или равен 255. значение кодируется
в битовом поле минимального для диапазона размера. Когда диапазон равен 256. значение кодируется в
единственном октете выровненного по октету битового поля. Когда диапазон от 257 до 64К, значение
кодируется в два октета выровненного по октету- битового поля. Когда диапазон больше 64К. он
игнорируется, и значение кодируется в выровненное по октету битовое пате, которое содержит минимальное
для значения количество октетов. В последнем случаедальнейшие процедуры (см. 10.9) кодируюти патедлины
(обычноодиноктет)для указаниядлины кодирования. В других случаях длина кодировании нс зависит от
кодируемого значения и не кодируется явно.
10.5.1 Настоящий подраздел специфицирует отображение из ограниченных целых чисел либо
а битовое поле, либо в выровненное по октету битовое поле, которое используется в последующих
разделах настоящего стандарта.
10.5.2 Процедуры данного подраздела вызываются, если только ограниченное целое число,
которое должно быть закодировано, доступно, а значения нижней границы, lb, и верхней границы,
ub, были определены из нотации типа (после применения видимых для PER ограничений).
П р и м е ч а н и е — Нижняя граница нс может быть определена, если M1N является бесконечным чис-
лом, а верхняя граница нс может быть определена, если МАХ является бесконечным числом. Например ни
верхняя, ни нижняя Гранины нс могут быть определены для INTEGER (M1N..MAX).
10.5.3 Определим диапазон «range* как целое значение (ub - lb + 1); пусть значение, которое
должно быть закодировано, есть п.
10.5.4 Если «range* имеет значение 1, то результат кодирования должен быть пустым битовым
полем (без битов).
10.5.5 Существует пять других случаев (приводящих к разным кодированиям), в одном из
которых применяется вариант UNALIGNED, а в четырех других — вариант ALIGNED.
10.5.6 В случае варианта UNALIGNED значение (л — 1Ь) должно быть закодировано как
неотрицательное двоичное целое в битовом поле, как определено в 10.3, с минимальным числом
битов, необходимым для представления диапазона.
П р и м е ч а н и е — Если «range» удовлетворяет неравенству 2" < «range»s 2’"*то чисто битов равно т + I.
10.5.7 В случае варианта ALIGNED кодирование зависит от того, что:
а) «range* меньше или равен 255 (случай битового поля);
б) «range* равен 256 (случай одного октета);
в) «range* больше 256, но меньше или равен 64К (случай двух октетов);
г) «range* больше 64К (случай неопределенной длины).
10.5.7.1(Случай битового поля). Если диапазон «range* меньше или равен 255, то применение
настоящего раздела требует сгенерировать битовое поле с числом битов, указанным ниже в таблице
и содержащим значение (/г — 1Ь) в виде неотрицательного двоичного целого кодирования в битовом
поле, как определено в 10.3.
Размер битового поля (в битах)
1
2
Диапазон «range*
2
3.4
5 -8
9 -1 6
17-32
33-64
65-128
129-255
3
4
5
6
7
8
12