Формы представления данных - Упакованный формат

Вообще говоря, возможно построить ЭВМ, способную выполнять арифметические операции над числами, записанными в зонном формате или даже в коде EBCDIC. Однако нетрудно заметить, что в таком случае около половины всего места, отводимого для записи числа, будут занимать зонные части. Полезную информацию при этом будет нести только содержимое знаковой зоны. Все остальные зоны будут содержать код F. Упакованный десятичный формат — это не что иное, как способ более компактной записи десятичных чисел. Для получения числа в упакованном формате достаточно удалить все не несущие информации зоны из зонного формата десятичного числа. Содержимое знаковой части при этом следует переместить в правый конец числа. Описанный процесс изображен на рис. 15.1.

Итак, число, представленное в упакованном формате, имеет по крайней мере на одну цифру больше по сравнению с его обычной записью. Если в исходном виде число состояло из четного числа цифр, то с левого конца оно дополняется нулем (число всегда должно размещаться в целом количестве байтов).

Мы видели, что в зонном формате число —137 выглядит как

F1F3D7

Для получения упакованного формата код знака перемещается в правый конец числа (можно считать, что меняются местами две последние цифры). Получается

F1F37D

Затем удаляются все зоны, содержащие F:

137D '

Рис. 15.1. Преобразование из зонного формата в упакованный. Символ х обозначает произвольную десятичную цифру. Символ S — код знака.

Таким образом, нами получен окончательный результат. Аналогично число, записывающееся в зонном формате как

F5F0C0

в упакованном виде выглядит следующим образом:

500С

Если же зонный формат выглядит как

F6F3F2D3

то число в упакованном формате записывается в виде

06323D

В последнем случае число спереди дополнено нулем.

Упакованный формат можно рассматривать как модификацию двоично-десятичной записи числа в коде BCD. В двоично-десятичной записи каждая десятичная цифра представляется группой из четырех битов, при этом содержимое каждой группы попросту есть соответствующая десятичная цифра, записанная в двоичной системе счисления. Например, число 4510 можно представить как

0100 0101,

или как

451в

(в последнем случае использована двоично-десятичная форма записи). Отметим, что двоично-десятичное представление числа в общем случае не совпадает с его двоичным представлением. Имея двоично-десятичную запись числа, уже легко получить его в упакованном формате. Для этого достаточно дополнить двоично-десятичную запись справа кодом знака.

С точки зрения представления чисел в машине упакованный формат является более предпочтительным, чем зонный. В упакованном десятичном числе каждая группа из четырех битов кодирует одну десятичную цифру от 0 до 9. Однако рассмотрение двоичной записи числа показывает, что в ней уже группой из четырех битов может быть закодировано любое число от 1 до 15. Отсюда следует, что упакованный формат хотя и более экономен с точки зрения использования памяти, чем зонный, все же не так эффективен, как обычная двоичная запись числа.

Тем не менее (это будет показано в следующей главе) упакованный формат является очень удобным способом представления числовых данных в машине. Большинство ЭВМ Систем 360 и 370 имеют команды, необходимые для выполнения арифметических операций, а также операций сравнения и пересылки над десятичными числами, записанными в упакованном формате.

 



 
Статьи раздела