T Десятичные числа
В ряде задач, главным образом, учетно-статистического характера, приходится иметь дело с хранением, обработкой и пересылкой десятичной информации. Особенность таких задач состоит в том, что обрабатываемые числа могут состоять из различного и весьма большого количества десятичных цифр. Традиционные методы обработки с переводом исходных данных в двоичную систему счисления и обратным преобразованием результата зачастую сопряжены с существенными накладными расходами. По этой причине в ЭВМ применяются иные специальные формы представления десятичных данных. В их основу положен принцип кодирования каждой десятичной цифры эквивалентным двоичным числом из четырех битов (тетрадой), то есть так называемым двоично-десятичным кодом (BCD – Binary Coded Decimal). Используются два формата представления десятичных чисел (все числа рассматриваются как целые): зонный (распакованный) и уплотненный (упакованный). В обоих форматах каждая десятичная цифра представляется двоичной тетрадой, то есть заменяется двоично-десятичным кодом. Из оставшихся задействованных шести четырехразрядных двоичных комбинации (24= 16) две служат для кодирования знаков «плюс» и «минус». Например, в ЭВМ семейства IBM 360/370/390 для знака «плюс» выбран код 11002=С16, а для знака «минус» — код 11012=D16. Форматы десятичных чисел А) – зонный; Б) – уплотненный
Зонный формат применяется в операциях ввода/вывода. В нем под каждую цифру выделяется один байт, где младшие четыре разряда отводятся под код цифры, а в старшую тетраду (поле зоны) записывается специальный код - «зона», не совпадающий с кодами цифр и знаков. В IBM 360/370/390 это код 11112=F16 Исключение составляет байт, содержащий младшую цифру десятичного числа, где в поле зоны хранится знак числа. Для примера показана запись числа «–7396» в зонном формате. В некоторых ЭВМ принят вариант зонного формата, где поле зоны заполняется нулями. При выполнении операций сложения и вычитания над десятичными числами обычно используется упакованный формат и в нем же получается результат. Умножение и деление возможно только в зонном формате. Представление числа -7396 в упакованном формате имеет вид, приведенный на рисунке 2.15. Размещение знака в младшем байте, как в зонном, так и в упакованном представлениях, позволяет задавать десятичные числа произвольной длины и передавать их в виде цепочки байтов. В этом случае знак указывает, что байт, в котором он содержится, является последним байтом данного числа, а следующий байт последовательности - это старший байт очередного числа.
|