Десятичные числа

Упакованные целые числа

 

 

Рисунок 2.12 – Форматы упакованных чисел в технологиях MMX и 3D Now!

 

В АСК современных микропроцессоров имеются команды, оперирующие целыми числами, представленными в упакованном виде. Связано это с обработкой мультимедийной информации. Формат предполагает упаковку в пределах достаточно длинного слова (обычно 64-разрядного) нескольких небольших целых чисел, а соответствующие команды обрабатывают все эти числа параллельно. Если каждое из чисел состоит из четырех двоичных разрядов, то в 64-разрядное слово можно поместить до 16 таких чисел. Неиспользованные разряды заполняются нулями, В микропроцессорах фирмы Intel, начиная с Pentium ММХ, присутствуют специальные команды для обработки мультимедийной информации (ММХ-команды), оперирующие целыми числами, упакованными в квадрослова (64-разрядные слова). Предусмотрены три формата (рисунок 2.12): упакованные байты (восемь 8-разрядных чисел); упакованные слова (четыре 16-разрядных числа) и упакованные двойные слова (два 32-разрядных числа).

Байты в формате упакованных байтов нумеруются от 0 до 7, причем байт 0 располагается в младших разрядах квадрослова. Аналогичная система нумерации и размещения упакованных чисел применяется для упакованных слов (номера 0-3) и упакованных двойных слов (номера 0-1).

Идентичные форматы упакованных данных применяются также в другой технологии обработки мультимедийной информации, предложенной фирмой AMD. Эта технология носит название 3DNow!, а реализована в микропроцессорах данной фирмы.

 

А) – зонный; Б) – уплотненный

Рисунок 2.13 – Форматы десятичных чисел

 

В ряде задач, главным образом, учетно-статистического характера, приходится иметь дело с хранением, обработкой и пересылкой десятичной информации. Особенность таких задач состоит в том, что обрабатываемые числа могут состоять из различного и весьма большого количества десятичных цифр. Традиционные методы обработки с переводом исходных данных в двоичную систему счисления и обратным преобразованием результата зачастую сопряжены с существенными накладными расходами. По этой причине в ЭВМ применяются иные специальные формы представления десятичных данных. В их основу положен принцип кодирования каждой десятичной цифры эквивалентным двоичным числом из четырех битов (тетрадой), то есть так называемым двоично-десятичным кодом (BCD – Binary Coded Decimal).

Используются два формата представления десятичных чисел (все числа рассматриваются как целые): зонный (распакованный) уплотненный (упакованный). В обоих форматах каждая десятичная цифра представляется двоичной тетрадой, то есть заменяется двоично-десятичным кодом. Из оставшихся задействованных шести четырехразрядных двоичных комбинации (24= 16) две служат для кодирования знаков «плюс» и «минус». Например, в ЭВМ семейства IBM 360/370/390 для знака «плюс» выбран код 11002 16, а для знака «минус» — код 11012 =D16.

Зонный формат, приведенный на рисунке 2.13, А), применяется в операциях ввода/вывода. В нем под каждую цифру выделяется один байт, где младшие четыре разряда отводятся под код цифры, а в старшую тетраду (поле зоны) записывается специальный код «зона», не совпадающий с кодами цифр и знаков. В IBM 360/370/390 это код 11112- F16 Исключение составляет байт, содержащий младшую цифру десятичного числа, где в поле зоны хранится знак числа. На рисунке 2.14 показана запись числа «–7396» в зонном формате. В некоторых ЭВМ принят вариант зонного формата, где поле зоны заполняется нулями.

 

 

Рисунок 2.14 – Представление числа «–7396» в зонном формате

 

При выполнении операций сложения и вычитания над десятичными числами обычно используется упакованный формат и в нем же получается результат. Умножение и деление возможно только в зонном формате.

В упакованном формате, показанном на рисунке 2.13, Б), каждый байт содержит коды двух десятичных цифр. Правая тетрада последнего байта предназначается для записи знака числа. Десятичное число должно занимать целое количество байтов. Если это условие не выполняется, то четыре старших двоичных разряда левого байта заполняется нулями. Так, представление числа -7396 в упакованном формате имеет вид, приведенный на рисунке 2.15.

 

 

Рисунок 2.15 – Представление числа «–7396» в упакованном формате

 

Размещение знака в младшем байте, как в зонном, так и в упакованном представлениях, позволяет задавать десятичные числа произвольной длины и передавать их в виде цепочки байтов. В этом случае знак указывает, что байт, в котором он содержится, является последним байтом данного числа, а следующий байт последовательности — это старший байт очередного числа.