|
Главная -> Появление первого микропроцессора 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 суммы, т. е. появление в левых разрядах формата мантиссы незначащих нулей. В этом случае необходимо нормализовать мантиссу согласно условию (2.3). Эта операция, называемая нормализацией влево, заключается в сдвиге мантиссы влево на г (г < п) разрядов (умножении мантиссы на 2) и соответствующем уменьшении порядка суммы: 7 fZ; т,, если 2-"<Z<l; ,ол in~ - \z.2; т,-г, если Z<2-, •> где г - число левых нулевых двоичных разрядов мантиссы суммы. При программной реализации нормализации влево величина г, как правило, не определяется, а сдвиги влево и коррекция порядка производятся до тех пор (при ненулевой мантиссе), пока не будет выполнено условие (2.3). При реализации процессов, описываемых формулами (2.10) - (2.13), возможно появление четырех особых ситуаций, которые должны выявляться программными средствами. При выравнивании порядков возможен случай, когда Дт п, т. е. разность порядков слагаемых превышает разрядность цифровой части мантиссы. Очевидно, что при такой денормализации мантиссы меньшего слагаемого она полностью выходит за рамки разрядной сетки, т. е. становится равной нулю. В этом случае результат равен большему слагаемому, и нет необходимости вьшолнять сложение. При сложении равных чисел с разными знаками мантисса суммы равна нулю. Такая нулевая мантисса не может быть нормализована, и факт ее появления используется для обнуления порядка суммы. При нормализации мантиссы суммы вправо возможно переполнение порядка суммы: т, = т -\- \ > > Штгх, а при нормализации влево - антипереполнение порядка суммы: т = т - г <. т. Появление таких ошибок свидетельствует о неправильном выборе формата с точки зрения представления диапазона чисел в конкретном вычислительном процессе. Такие ошибки должны обязательно выявляться, и в случае переполнения необходимо прекратить процесс вычислений. Оценим точность операции сложения чисел с плавающей запятой. Эта точность ограничивается округлением чисел при их сдвигах за рамки основного формата в процессах денормализации мантиссы меньшего слагаемого, нормализации суммы вправо и влево, а также при обнулении результата в случае антипереполнения порядка [32 -34]. Основная прогрешность возникает при денормализации мантиссы, поскольку при последующей нормализации суммы вправо эта первоначальная погрещность может только уменьшиться, а при нормализации суммы влево погрешность можно вообще устранить, если сохранить хотя бы два первых выдвинутых разряда денормализованной мантиссы и использовать их.при нормализации суммы влево (незначащие нули могут появиться лишь при вычитании близких чисел с Дт 2). Ошибку обнуления результата при антипереполнении порядка учитывать не будем, считая, что либо эта ошибка в процессе вычислений не возникает, либо процесс вычислений останавливается при ее появлении. Если бы при сложении нормализованной мантиссы большего слагаемого с денормализованной мантиссой меньшего слагаемого в соответствии с формулой (2.11) использовались все п-\-Ат разрядов слагаемых, то сумма была бы точным числом (при условии, что точны слагаемые). Однако выдвинутые за рамки и-разрядного формата денормализованные разряды мантиссы меньшего слагаемого не участвуют в сложении, т. е. сумма образуется путем округления. Очевидно, что в случае отбрасывания Дт разрядов граничная абсолютная ошибка округления мантиссы суммы не превышает величины 2~", а граничная относительная ошибка округления суммы (в наихудшем случае отсутствия переполнения суммы и при минимальном значении ее нормализованной мантиссы) равна 6 p(z)=A=(=:ir; 2-«+«. (2.14) Исходные слагаемые являются числами ограниченной точности, граничные относительные ошибки представления которых определяются неравенством (2.6). Согласно формуле (1.14), граничная относительная ошибка суммы не превосходит ошибки наименее точного слагаемого. Однако округление суммы увеличивает эту ошибку на величину, вычисленную по формуле (2.14), т. е. в 2 раза, и сумма становится менее точной, чем слагаемые. Ошибку округления можно уменьшить, если использовать правило симметричного округления (1.9). Далее приведены программы сложения чисел с плавающей запятой СДПЗЗ и СДП34, реализующие рассмотрен- ные алгоритмы сложения для короткого (8,16) и длинного (8, 24) форматов чисел. 2.2.2. ФОРМАТ (8, 16)+ (8, 16)= 8, 16) Программа СДПЗЗ выполняет сложение чисел, представленных в формате (8, 16) (см. рис. 2.3, а): 1000 0090 00В8 00D6 10В0 10DO 10F1 1000 СГ19000 1003 С8 1004 С5 1005 50 1006 59 1007 ЕВ 1008 CD9000 100В ЕВ 100С С21410 iOOF CDB800 1012 С1 1013 С9 1014 1А 1015 Е680 1017 07 1018 17 1019 47 101А 7Е КОМЗ ОБМЗ ДМАН2 НМАН2 ПМАНг ORG SET SET SET SET SET SET lOOOH 90H 0Б8Н 0D6H lOBOH lODOH lOFlH СДПЗЗ: гПОДПРОГРАММА СЛОЖЕНИЯ 3- БАЙТНЫХ ДВОИЧНЫХ ЧИСЕЛ С ПЛА-гВАЮИЕИ ЗАПЯТОЙ В ДОПОЛНИТЕЛЬНОМ КОЛЕ ФОРМАТА (8г16>= г=(ПОР»МАН>»ГДЕ БАЙТ ПОРЯДКА СОДЕРЖИТ БИТ 3tlAKA МАКГИССЫ ;И ЦЕЛОЧИСЛЕННЫЙ ДВОИЧНЫЙ ПОРЯДОК СО СМЕШЕНИЕМ +40Н,А гДВА БАЙТА МАНТИССЫ-СТБ И МЛБ-ДЕОИЧНОЕ ДРОБНОЕ НОРМАЛИ-гЗОВАННОЕ ЧИСЛО В ДОПОЛНИТЕЛЬНОМ КОЛЕ., гВХОДНЫЕ ПАРАМЕТРЫ:(ВгС)-АДРЕС СЛАГАЕМОГО 1т(HfL)-АДРЕС гСЛАГАЕМОГО 2.ВЫХОДНЫЕ ПАРАМЕТРЫ:(В>С)~АДРЕС СУММЫ (СУМ-гМА НА МЕСТЕ СЛАГАЕМОГО 1) тСУ--1-ПРИЗНАК ПЕРЕПОЛНЕНИЯ ИЛИ гАНТИПЕРЕПОЛНЕНИЯ ПОРЯДКА СУММЫ.ИСПОЛЬЗУЮТСЯ ВСЕ РЕГИ-гСТРЫтСОХРАНЯЮТСЯ (BtC).(H.L) .ГЛУБИНА СТЕКА-Ю.ИСПОЛЬЗУ-г ЮТСЯ ПОДПРОГРАММЫ : *К0МЗ* т * ПМЗ*, *0БМЗ» т *ДНАН2» т «ПМАН2* т г*НМАН2*. гО«ЁНКА:ДЛИНА-161 БАЙТ (+127 БАЙТ ПОДПРОГРАММ).ВРЕМЯ-НЕ гБОЛЕЕ 2563 ТАКТОВ (С УЧЕТОМ ПОДПРОГРАММ). гПРОВЕРКА СЛАГАЕМОГО 2 (СЛ2) НА НОЛЬ г2=1.ЕСЛИ СЛ2=0 гЕСЛИ СЛ2=0»(CY=0) <СЛ1) НА НОЛЬ гСОХРАНЕНИЕ АДРЕСА СЛ1 CALL КОМЗ RZ гПРОВЕРКА СЛАГАЕМОГО PUSH MOV MOV ХСН6 CALL XCHG JNZ В DrB E.C КОМЗ ПЕР1 г(ВгЕ)-АДРЕС СЛ1 гz=l.ECли сл1=о гЕСЛИ СЛ1 НЕ НОЛЬ гПЕРЕМЕИЕНИЕ СЛ2 НА МЕСТО СЛ1 (СЛ1=0тСЛ2 НЕ О) CALL ПМЗ гСЛ2 НА МЕСТЕ СЛ1 POP В гВОССТАНОВЛЕНИЕ АДРЕСА СЛ1 RET гЕСЛИ СЛ1=0.(С¥=0) гОБА СЛАГАЕМЫЕ НЕ НОЛЬ.ПОЛУЧЕНИЕ МОДИФИЦИРОВАННЫХ КОДОВ гЗНАКОВ СЛАГАЕМЫХ В (В,С):00="+"т11="-" ПЕР1! LIiAX BrA ArM г(А)-П0Р1 г ВЫДЕЛЕНИЕ ЗНАКА г(Б)-КОД ЗНАКА СЛ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.0082 |
|