Главная > Искусство схемотехники, Т.2
<< Предыдущий параграф
Пред.
След.
Макеты страниц

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

Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике

10.23. Форматы чисел

Формат байтов (или слов), получаемых из частотомера в рассмотренном примере, отличается от внутримашинного двоичного формата; частотомер образует двоично-кодированные десятичные коды, упакованные по две цифры в байте (или четыре цифры в слове). Чтобы с этими числами можно было выполнять какие-то вычисления, их следует преобразовать в целые числа или в числа с плавающей точкой (хотя в системе команд микропроцессора предусмотрены и команды с «десятичной коррекцией», позволяющие выполнять арифметические операции непосредственно над упакованными двоично-кодированными десятичными числами). Рассмотрим форматы чисел, обычно используемые в компьютерах (рис. 10.24), предмет, кратко затронутый нами в начале гл. 8.

Целые числа. Целые числа (integer) со знаком всегда представляются, как дополнение до 2 и занимают 1,2 или 4 байт (см. рис. 10.24). Старший бит является знаковым, хотя дополнение до двух не совпадает с представлением в виде знака и числа (т. е. — 1 записывается, как 11111111, а не 10000001; см. разд. 8.03). Дополнение до 2 можно представить себе, как «смещенное» двоичноес инвертированным старшим битом; но можно рассматривать его и как целое число со значением бит, указанным на рис. 10.24. Многие компьютеры позволяют объявлять переменные, как целые без знака в дополнение к объявлению целых со знаком в виде дополнения до 2. Двухбайтовое беззнаковое целое может иметь значение от 0 до 65535.

Числа с плавающей точкой.

Числа с плавающей точкой, называемые также действительными числами (real), обычно занимают 32 бит («одинарная точность») или 64 бит («двойная точность), однако иногда для промежуточных результатов вычислений используется дополнительный -бит формат. К сожалению, имеется несколько употребительных представлений этих чисел. Наиболее распространен формат IEEE (официальное название ANSI/IEEE который реализован почти во всех микропроцессорных наборах с плавающей точкой (включая Intel 8087/287/287, Motorola 68881, а также наборы фирм AMD, Weitek и др.) и по этой причине является стандартным для микрокомпьютеров, использующих эти наборы (в том числе ).

На рис. 10.24 показаны -бит и -бит форматы IEEE. -бит формат одинарной точности предусматривает 1 знаковый бит, 8 бит порядка и 23 бит мантиссы. Порядок определяет степень 2, на которую следует умножить мантиссу (см. ниже). Порядок «смещен» путем прибавления 127, так что поле порядка 01111111 соответствует порядку 0; в результате диапазон порядка составляет от —127 до + 128.

Рис. 10.24. Форматы чисел. S-знак.

Мантисса также записывается любопытным способом, который был впервые использован фирмой DEC в своем формате с плавающей точкой. Двоичное число с плавающей точкой всегда можно записать в виде , где мантисса (по основанию 2) («значащая ), а е - порядок (степень 2). Для того чтобы получить при заданном числе бит мантиссы максимальную точность, она «нормализуется» путем сдвига влево (с соответствующим декрементом порядка), пока лидирующий бит не станет равен 1, в результате чего мантисса представляется в виде . Далее, используется прием «скрытого бита». Поскольку результирующая значащая часть мантиссы всегда имеет ненулевой старший бит, хранить его в памяти было бы избыточно; вместо lfff можно записать просто , где лидирующая 1 подразумевается. В результате точность числа возрастает, так как его представление увеличивается на 1 бит, образуя диапазон от до

Упражнение 10.9. Сконструируйте на бумаге минимальное и максимальное нормализованные числа с плавающей точкой и убедитесь, что приведенные выше предельные значения соответствуют истине.

Формат IEEE с двойной точностью образуется аналогично, но точность мантиссы более чем удваивается (увеличиваясь на 29 бит), а порядок получает дополнительные 3 бит. Диапазон чисел указан на рисунке.

Формат IEEE допускает также хранение ненормализованных чисел, что несколько увеличивает диапазон со стороны маленьких чисел (за счет уменьшения точности); «денормализованные» числа могут доходить до величины . Стандарт также определяет нуль таким образом, есть 2 нуля, и —0), бесконечность все единицы, поэтому оба знака), а также любопытный класс зарезервированных величин, имеющих официальное название «не число» Number).

Другой важный микрокомпьютерный формат чисел с плавающей точкой принадлежит фирме DEC и используется в компьютерах (а также в их предках, мини-ЭВМ VAX и ). Он почти совпадает со стандартом IEEE, имея то же число бит в порядке и мантиссе (включая использование скрытого бита) чисел с одинарной точностью. Отличия заключаются в другом значении смещения (128 вместо 127), а также в отсутствии лидирующих бит в мантиссе, которая представляется в виде ,lfff (со скрытой 1). DEC определяет только один нуль (все биты которого равны 0); и не допускает ненормализованных чисел и бесконечности; имеются, однако, величины, аналогичные «не числам» IEEE. DEC также определяет -бит формат удвоенной точности.

Последние два формата, приведенные на рис. 10.24, используются не в микрокомпьютерах, а в больших ЭВМ или в машинах специального назначения. Формат в течение некоторого времени использовался в универсальных ЭВМ фирмы IBM и даже в некоторых мини-ЭВМ, например, Nova фирмы Data General.

-бит смещенный порядок определяет степень 16, а не 2, увеличивая диапазон чисел. Мантисса в результате может иметь до трех лидирующих нулей, т. е. нормализованная часть содержит ненулевую старшую шестнадцатеричную цифру.

Упражнение 10.10. Чтобы понять смысл последней фразы, напишите представление числа 1.0 в формате IBM. После этого напишите следующее меньшее число в том же формате.

Использование в формате IBM числа 16 в качестве основания увеличивает динамический диапазон, но уменьшает точность. Более того, точность несколько изменяется от числа к числу из-за переменного количества лидирующих двоичных нулей; это явление известно, как «качание» (wobble). В формате IBM отсутствуют «не числа» и бесконечность, и имеется только один нуль (все биты нули); не нормализованные числа не допускаются. Имеется формат IBM и для чисел с двойной точностью (64 бит).

Последний формат на рис. , используется в военных системах. Он необычен в том отношении, что вместо знака и величины числа в нем записывается мантисса в форме дополнения до двух и порядок тоже в форме дополнения до двух (строго говоря, предыдущие форматы характеризуются записью мантиссы в форме знак/величина, а порядка в форме смещенного двоичного). В формате отсутствуют бесконечности, «не числа» и не нормализованные числа; имеется вариант для чисел с удвоенной точностью.

Хранение чисел в памяти.

Разработчики микропроцессоров любят выражать свою индивидуальность, предусматривая хранение чисел в памяти в своеобразном порядке. Микропроцессоры , следовательно, и компьютеры IBM PC и совместимые с ними) записывают числа в память, начиная с самого младшего байта, который располагается в байте памяти с наименьшим номером; для семейства 68000 характерен обратный порядок. Вот счастье-то!

Преобразование данных в процессе ввода-вывода.

Нам пришлось уже обсуждать форматы данных в контексте аппаратного интерфейса, который выдавал упакованные двоично-десятичные числа. Каков наиболее оптимальный способ работы с

-разрядными данными, получаемыми из такого интерфейса?

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

Categories

1
Оглавление
email@scask.ru