ГОСТ Р ИСО/МЭК 8825-1-2003
8.3 Кодирование целочисленного значения
8.3.1 Кодирование целочисленного значения должно быть простым. Октеты содержимого должны состоять из одного или нескольких октетов.
8.3.2 Если октеты содержимого кодирования целочисленного значения содержат более одного октета, то биты первого октета и 8 бит второго октета:
а) не должны все быть единицами;
б) не должны все быть нулевыми.
Примечание — Эти правила гарантируют, что целочисленное значение всегда кодируется в наименьшем возможном числе октетов.
8.3.3 Октеты содержимого должны быть дополнительным кодом двоичного числа, равного кодируемому целочисленному значению, образованным битами с 8 по 1 первого октета, с последующими битами с 8 по 1 второго октета, с последующими битами с 8 по 1 каждого очередного октета, включая последний октет содержимого.
Примечание — Значение дополнительного кода двоичного числа получается путем нумерации битов в октетах содержимого, начиная с бита 1 последнего октета как бита 0 и заканчивая нумерацию битом 8 первого октета. Каждому биту присваивается числовое значение 2^, где N — номер бита в описанной выше нумерации. Значение дополнительного кода двоичного числа получается суммированием числовых значений, присвоенных каждому биту, тех битов, которые равны единице, исключая бит 8 первого октета, и последующего уменьшения этой суммы на числовое значение, присвоенное биту 8 первого октета, если тот бит равен единице.
8.4 Кодирование перечислимого значения
Кодирование перечислимого значения должно быть кодированием связанного с ним целочисленного значения.
Примечание — Кодирование является простым.
8.5 Кодирование действительного значения
8.5.1 Кодирование действительного значения должно быть простым.
8.5.2 Если действительное значение является нулевым, то в кодировании не должно быть никаких октетов содержимого.
8.5.3 Если действительное значение ненулевое, то используемое для кодирования основание В' выбирается отправителем. Если В' равно 2, 8 или 16, то должно использоваться двоичное кодирование, определенное в 8.5.5. Если В' равно 10, то должно использоваться символьное кодирование, определенное в 8.5.6.
Примечание — Форма хранения, создания или обработки отправителями и получателями и форма, используемая в нотации значения ACH.1, полностью не зависят от основания, используемого при передаче.
8.5.4 Бит 8 первого октета содержимого должен быть установлен следующим образом:
а) если бит 8 = 1, то применяется двоичное кодирование, определенное в 8.5.5;
б) если бит 8 = 0 и бит 7 = 0, то применяется десятичное кодирование, определенное в 8.5.6;
в) если бит 8 = 0, а бит 7 = 1, то «SpecialRealValue» (см. ГОСТ Р ИСО/МЭК 8824-1) кодируется так, как определено в 8.5.7.
8.5.5 При использовании двоичного кодирования (бит 8 = 1), если мантисса М ненулевая, то она должна быть представлена знаком S, неотрицательным целочисленным значением N и двоичным масштабным коэффициентом F, как то:
М = Sx Nx 2^;
0 < F < 4;
S = +1 или —1.
Примечание — Коэффициент F требуется в некоторых случаях для выравнивания подразумеваемой точки мантиссы к позиции, требуемой правилами кодирования настоящего раздела. Это выравнивание не всегда может быть достигнуто модификацией экспоненты Е. Если основание В', используемое для кодирования, равно 8 или 16, то изменениями компонента Е подразумеваемая точка может быть сдвинута только на 3 или 4 бита соответственно. Следовательно, для перемещения подразумеваемой точки в нужное положение могут потребоваться отличные от нуля значения коэффициента F.
8.5.5.1 Бит 7 первого октета содержимого должен быть равен 1, если S равен —1, в противном случае он равен 0.
7