Доставка цветов в Севастополе: SevCvety.ru
Главная -> Появление первого микропроцессора

0 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116

/?= 16), а для целых чисел Г= 10?+ (Г= 2" + для= 2. Г=10"+ для R=\0 и Г=16" + для R=\6). Иными словами, в дополнительном коде запись положительного числа идентична его записи в прямом коде, а запись отрицательного числа представляет собой результат операции вычитания модуля числа Ar из границы: V-IArI.

Поскольку граница Г представляет собой фиксированную степень, легко показать, что указанная операция вычитания сводится к поразрядной операции дополнения каждой цифры числа до старшей цифры системы счисления (поиску взаимно обратной цифры а,-, такой, что а, + + ai = R-1) и суммированию полученного обратного кода с единицей младшего разряда числа, т. е. с величиной 10r~" для дробных и 10д=1 -для целых чисел. Например, для десятичной дроби 0,1234 ее отрицательный эквивалент в дополнительном коде имеет вид 9,8765-+-+ 0,0001 = 9,8766. Для проверки правильности преобразования сложим эти числа: 0,1234 + 9,8766=10,0000. Результат равен границе десятичной дроби. Поскольку формат чисел содержит 5 разрядов (знаковый и 4 цифровых), полученная при сложении чисел единица переноса выходит за рамки формата, и истинный результат равен 0,0000, что подтверждает правильность преобразования отрицательного числа в дополнительный код. Аналогичные действия используются для обратного перевода дополнительного кода отрицательного числа в прямой код, т. е. для получения модуля числа.

Смысл использования дополнительного кода заключается в том, что, во-первых, арифметические операции вычитания и сложения чисел в допонительных кодах сводятся к операции алгебраического суммирования (вычитание заменяется сложением уменьшаемого с дополнительным кодом вычитаемого); во-вторых, обработка знаковой и цифровой частей чисел при сложении производится по одним и тем же правилам, причем правильный знак результата формируется автоматически. Заметим, что в дополнительном коде в отличие от прямого и обратного кодов суш,ествует единственное представление нуля (для дробных чисел О = 0,00...00), но вместе с тем имеется и одно особое отрицательное число вида 1,0...00, которое является своим собственным дополнением, т. е. это число не имеет дополнительного к нему положительного числа. Поэтому в дополнительных кодах область пред-



ставления положительных и отрицательных чисел оказывается несимметричной относительно нуля.

В микропроцессорах, как и в любых других технических средствах, выполняющих автоматические вычисления, количество разрядов п, отводимых для представления чисел, ограниченно и фиксированно. Этот факт наряду с использованием для представления чисел двоичной системы приводит к существенным отличиям машинной арифметики от обычной арифметики, реализуемой посредством карандаша и бумаги - неограниченных ресурсов [34, 37, 46, 47, 50, 66, 74]. Назовем числа, представляемые в фиксированной разрядной сетке, числами с ограниченной точностью, а машинную арифметику - арифметикой ограниченной точности (АОТ) [66]. Эти термины подчеркивают принципиальную особенность машинной арифметики, которую программист должен постоянно иметь в виду.

Рассмотрим основные свойства АОТ. Как следует из формул (1.6), (1.7), числа I Л,? > Лдах и Лд <Л;™п нельзя представить в «-разрядном формате, поскольку пред-ставимые числа принадлежат множеству (диапазону)

{[ -Лтах, - Лктш], О, [-ЬЛдтт, +Л/?тах (рИС. 1.2, а). ДлЯ

двоичных дробных и целых чисел эти крайние - пограничные - значения ненулевых представимых чисел определены формулами (1.3) и (1.5) (рис. 1.2, б, е). Если при выполнении арифметической операции появляется число \Ar \ >Лдтах, ЭТО приводит К первполнению «-разрядного формата числа и, как правило, ошибочному представлению результата операции (оилибка переполнения). Наоборот, если при выполнении операции возникает такое ненулевое число, что \Ar \ <.Ацт\п, это приводит к антипереполнению (потере значности) формата и соответственно к ошибке антипереполнения, при которой все ненулевые числа Л е {-Л/щт, +Акш\и\ приходится представлять в виде нуля. Любое число из указанного интервала называют машинным нулем.

Появление ошибок переполнения и машинного нуля в АОТ нарушает ряд аксиом, истинных в арифметике точных чисел, в частности ассоциативный а-{Ь - с) = = (а + fc) - с и дистрибутивный а-{Ь - с) = а-Ь -а-с законы, что можно показать на примерах [66]. Пусть дробные беззнаковые десятичные числа имеют в 4-разрядном формате значения а = 0,2000, 6 = 0,9000 и с = = 0,8999. Тогда вычисление левой части выражения ас-



-1 I I I I I I I I I I I--llllllllllll-

~\\\ \ I I I I I I 11 I I I n I lIlTr

Рис. 1.2. Размещение чисел ограниченной точности на числовой оси: а-/?-ичные числа; б-двоичные дробные числа; в - двоичные целые числа

социативного закона дает значение 0,2000 + (0,9000- - 0,8999) = 0,2001, а при вычислении правой части возникает переполнение: (а + fc) = 0,2000 + 0,9000 > 0,9999. Аналогично при вычислении правой части выражения дистрибутивного закона получаем значение 0,2000 X X 0,9000 - 0,2000 • 0,8999 = 0,1800 - 0,1799 = 0,0001, а при вычислении левой части возникает машинный нуль: а • (6 - с) = 0,2000 • (0,9000 - 0,8999) = 0,2000 • 0,0001 < < 0,0001. Поскольку значения правых и левых частей выражений не совпадают, данные законы нарушаются, и, следовательно, в АОТ порядок операций, позволяюш,ий избежать ошибок переполнения и машинного нуля, имеет важное значение для получения правильного результата вычислений. Заметим, что порядок операций оказывает влияние и на точность результата. Выявление ошибок переполнения и антипереполнения является задачей, которую необходимо решать при разработке арифметических программ.

Диапазон [Л/?,,,],,, Ar- точного представления в АОТ ненулевых дробных /?-ичных чисел имеет дискретный характер, т. е. в пределах этого диапазона точно представляется лишь то множество /?" - 1 чисел, в /?-ичной записи которых отличные от нуля цифры содержатся только в первых п после запятой разрядах (остальные дополнительные разряды, если предположить их существование, будут содержать нули) [47]. На практике приходится представлять в «-разрядном формате любые дробные числа из указанного диапазона, в том числе и те (а их большинство), разряды которых, выходящие за рамки принятого формата, содержат ненулевые /?-ичные цифры. Например, десятичная дробь 0,1 в двоичном



0 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116



0.0106
Яндекс.Метрика