ПОД (пособие) (1184372), страница 54
Текст из файла (страница 54)
Старший знаковый разряд в этихслучаях содержит истинное значение знака суммы, а младший является старшей значащейцифрой числа. Для коррекции переполнения число нужно сдвинуть в разрядной сетке наодин разряд вправо, а в освободившийся старший знаковый разряд поместить цифру,равную новому значению младшего знакового разряда. После корректировки переполнениямантиссы результата необходимо увеличить на единицу порядок результата.Система вещественных чисел, применяемая при ручных вычислениях, предполагаетсябесконечной и непрерывной, т.е. не существует никаких ограничений на диапазониспользуемых чисел и точность их представления.Однако в компьютерах реализация такой системы на аппаратном уровне была бынецелесообразной, хотя программно может быть реализована любая точность вычислений.Нецелесообразность аппаратной реализации вычислений с произвольной точностьювызвана тем, что такие вычисления требуют неоправданно большого расхода основныхмашинных ресурсов: памяти и процессорного времени.Во всех компьютерах размеры регистров и ячеек памяти фиксированы, что ограничиваетсистему представления чисел.
Ограничения касаются как диапазона, так и точностипредставления чисел, т.е. система машинных чисел оказывается конечной и дискретной.В любой универсальной ЭВМ существует несколько различных форматов представлениякак для чисел с фиксированной, так и для чисел с плавающей запятой. На некоторые изформатов имеются международные стандарты, и поэтому такие форматы являются общимидля ЭВМ, построенных различными фирмами на различной элементной базе.Следует отметить, что нестандартные форматы обычно являются неявноспециализированными для определенных областей применения, причем разработчикиаппаратуры могут не указать в документации, для чего был предназначен тот или инойформат.С точки зрения программиста важно, какие из форматов данных обрабатываютсяаппаратными средствами данной ЭВМ, а какие - только программными средствами.Операции над данными любого формата, который не поддерживается аппаратурой,выполняются очень медленно.
Любой формат данных, который превышает размеррегистров процессора, не пригоден для быстрых вычислений.Для представления целых чисел в ЭВМ обычно применяются 8-,16-, 32- и 64-битовыйстандартные форматы, причем интерпретация чисел как знаковых или без знаковых обычновозлагается на программиста или на компилятор с языка высокого уровня.Для представления чисел с плавающей запятой также существует несколько стандартныхформатов, различающихся по точности, но имеющих одинаковую структуру следующеговида:n-1 n-20...181знак мантиссысмещенный порядокмодуль мантиссыПорядок p задается в так называемой смещенной форме: если для задания порядкавыделено k разрядов, то к истинному значению порядка прибавляют смещение, равное (2k1 - 1).
Использование смещенной формы позволяет производить операции над порядками,как над без знаковыми числами, что упрощает операции сравнения, сложения и вычитанияпорядков. Кроме того, использование смещенного порядка упрощает операцию сравнениянормализованных чисел с плавающей запятой, сводя ее к операции сравнения целых чисел.Следует отметить, что вещественный формат с m-разрядной мантиссой позволяетабсолютно точно представлять m-разрядные целые числа, т.е. любое двоичное целое число,содержащее не более m разрядов, может быть без искажений преобразовано ввещественный формат.Арифметика машинных чисел.Множество чисел ограниченной разрядности является моделью расширеннойчисловой прямой, т.е.
числовой прямой с тремя абстракциями (потенциальнойосуществимости): нуль, положительная бесконечность, отрицательная бесконечность.Целые числа (в математике) и их аналоги в n - разрядных арифметиках тождественны(по отражаемым им количествам) в рамках их представления в этой разрядности. При этомможно отметить основные отличия представления чисел в поле памяти человека и в полепамяти n - разрядной арифметики (компьютера):бесконечное и счётное (нумеруемое) множество целых чисел Z представляетсяотрезком [—N;+N], где N - максимальное число, представимое в этой арифметике(многоточие - общее число единиц равное n): N=(111 . . .
1)2;бесконечное и несчётное множество действительных чисел (—¥ ;+¥ ),располагающееся на числовой оси равномерно и плотно, представляется в n-разряднойарифметике множеством с неравномерной плотностью (сгущение у нуля и сжатость состороны меньших чисел);нуль во множестве действительных чисел R в любой своей окрестности имеетмножество чисел, а нуль в n-разрядной арифметике представлен изолированно: вокрестности с радиусом равным наименьшему представимо в этой арифметике числу нетдругих чисел.С точки зрения обычной арифметики, например, в интервале (—1;1) имеетсябесконечное множество “плотно” расположенных точек, причем в любой окрестностикаждой такой точки имеется хотя бы одна точка из этого множества.
Такую арифметикуназывают часто регулярной арифметикой.Машинная же арифметика нерегулярна - точки интервала сгущаются около нуля.Кроме того, в этом интервале точка х “изолирована” - если взять её любую окрестность (х—а; х+а), где а - число, которое не превосходит машинного нуля (наименьшего представимогов машине числа), то в этом интервале нет других точек (отличных от х). Говоря языкомтеории вероятностей, плотности распределения чисел в регулярной и нерегулярнойарифметике - различны, как, впрочем, плотности распределения целых и вещественныхчисел в одной и той же арифметике.
Множество вещественных чисел в машиннойарифметике представляется как подмножество множества рациональных чисел,определяемое разрядностью арифметики.Есть и другие особенности этих множеств (связанные, например, с выполнениемопераций), но указанные выше особенности - основные.182Различия в представлении чисел в обычной и в машинной (n-разрядной) арифметикеограничивают как “арифметические возможности” компьютера, так и “компьютерныевозможности” арифметики, математики, использование математических методов,алгоритмов в компьютерах.Нужно всегда иметь в виду, что точность в теоретической математике - понятиеабстрактное и в практической математике может возникать иллюзия точности там, где её насамом деле нет, - если не произведена достаточно корректная интерпретация научнопрактической точности т.е.
нет корректной договорённости о пределах возможныхзначений неизбежных погрешностей в рамках рассматриваемых вычислительных ресурсов,например, трудоёмкости и времени, а также не оговорена стратегия и тактика управленияэтой погрешностью.Так как диапазон n-разрядных чисел системы счисления с основанием p находится впределах |(x)p|£ pn—1, то для представления дробных чисел этот диапазон ещё уменьшается,так как часть разрядов необходимо отвести под изображение мантиссы. Таким образом,имеются так называемые “зоны нечувствительности” форм представления чисел в nразрядных арифметиках.В 1937 году немецким учёным Конрадом Цузе (разработавшим, кстати говоря, нетолько ряд положений арифметических основ цифровых машин, но и прототипы ЦВМ –машины “Ц-1”, “Ц-2”) для увеличения диапазона чисел, представимых в арифметикедвоичных чисел, а также для повышения точности этого представления чисел былопредложено представление чисел в плавающей, нормализованной форме.Число x представляется в нормализованном виде: x=m´ pk, где m - мантисса числа, k целый порядок числа, p—1£ |m|<1.Пусть даны два числа x=m´ pk и y=n´ pl (k>l).
Тогда можно проверить, что результатывыполнения операций будут равны:x+y=(m+n´ pl—k)´ pk ,x—y=(m—n´ pl—k)´ pk ,x´ y=(m´ n)´ pk+l ,x/y=(m/n)´ pk—l ,Если из n разрядов, отводимых под изображение чисел, m двоичных разрядов отвестипод мантиссу, k - под порядок, один разряд - под знак числа и один разряд - под знакпорядка (например, 0 - плюс, 1 - минус), то диапазон представимых в форме с плавающейзапятой чисел резко увеличивается (m+k+2=n):—(0.111 . . . 1)2´ (10)2+(111 .
. . 1)2£ x£ +(0.111 . . . 1)2´ (10)2+(111 . . . 1)2(многоточие соответствует k единицам).Числа, меньшие нижней границы положительных чисел и большие верхней границыотрицательных чисел, считаются равными нулю, не различаются между собой. Числа,большие верхней границы положительных чисел полагаются равными положительнойбесконечности, а меньшие нижней границы отрицательных – отрицательной бесконечности.Сравнение двух разных по величине чисел в арифметике с ограниченной разрядностьюможет приводить, поэтому, к неверному результату, как и сравнение двух равных в такихсистемах чисел с точки зрения математической.Такое представление очень удобно для хранения в ЭВМ, так как на самом деленеобходимо хранить не само число, а его знак, мантиссу, порядок и знак порядка и всеоперации с числами сводятся к операциям с этими, более “компактными”, объектами.Операции с этими объектами достаточно просты: сравнение знаков, увеличение,183уменьшение порядка, сложение мантисс, нормализация, т.е.
в конечном итоге сводятся кдостаточно просто реализуемым операциям сдвига, выравнивания, сравнения разрядов. Этоупрощает аппаратную их реализацию и является основой для различных архитектур –микропрограммных, RISC и др.Пример. В 16-разрядной арифметике двоичных чисел можно представить диапазонцелых чисел х: 1—215<x<215—1 (старший разряд отвели под знак числа). Если в этойарифметике (не меняя её разрядность) отвести 7 разрядов под мантиссу, а 7 разрядов - подпорядок, то уже представим диапазон чисел: —127´ 2127<x<127´ 2127 (два разряда - под знакчисла и знак порядка; несколько упрощена и общая картина представления - длянаглядности).К “неудобствам” этой формы представления чисел можно отнести возможностьвозникновения следующих “особо опасных” ситуаций:а) если число достаточно мало, например, а=0.12Е+00, то оно может бытьпредставлено любым числом из наименьшего интервала включающего а, в частности,числом 0.120000001 или 0.199999999 и в этом случае сравнивать на равенство “в лоб”нельзя (вещественные числа в форме с плавающей запятой на совпадение опасносравнивать);б) порядок выполнения операций может влиять на результат, например, в 4-разряднойарифметике с фиксированной запятой 20.0000+0.0001=20.0001, но при этом0.2000Е+02+0.1000Е-05=0.2000Е+02;в) может возникнуть так называемая ситуация “переполнения порядка” при сложении(умножении) “очень больших чисел” или “исчезновения порядка” при сложении(умножении) “очень малых чисел”, например, результат 0.6000Е+39´ 0.1200Е+64 равен0.9999Е+99 (или не определен) и результат 0.6000Е—35´ 0.0200Е—65 равен 0.9999Е—99(или не определен) при соответствующим образом определенной разрядности десятичнойарифметики;г) при сложении чисел с плавающей запятой (а в конечном счёте, все операциивыполняются, как известно, через сложение, точнее, - через поразрядное сравнение исдвиги) происходит выравнивание порядков для последующего сложения мантисс, а привыравнивании степеней может происходить потеря (усечение) младших разрядов,например, такая ситуация может возникнуть при сложении одного “очень большого числа”с одним “очень малым числом” (почему?).Реализация операций в арифметике с плавающей запятой требует необходимостивыравнивания порядков при сложении и вычитании и нормализации результатов.