lekcii (522345), страница 5
Текст из файла (страница 5)
Например, (Л)э = О.п0101 (Л) = — 1ОГ. пО1 (Л) ю — — — 25.43 (Л)а = — 0.4321 Л = 0 П0101 = 1 01000П Л = 9 7457 Л = 4 0124 Отметим, что при представлении с плавающей точкой отдельно кодирун1тся мантисса и порядок числа. При этом возможно представление мантисс и порядков в одном и том же 165 в машине становятся положительными, и анализ знака порядка становится не нужным. Беззнаковый смещенный порядок называется л:арп1<терист11ко115 1Гри проведении операций сложения и вычитания необходим также анализ знаков мантисс чисел, причем в зависимости от этого принципиально изменяется сама методика выпОлнения Операции.
Кром<. ТОГО, Операция ВЫ~1ит<1ния В ма!пин<= рсйлизустся дс1статО 1но сложно, та,к как при этом часто возникает необходим<я.ть займа единиц в с<1ссднем старшем разряде. Если же в соседнем старшем разряде этого сделать н<-льзя. необходим заем в более старп1ем разряде, и т. д. Если умсньшаемое меньп1е вычитаемого, этот процесс будет продолжаться до самого старшего разряда, а затем нужно вычитание делать заново, поменяв знак разности на противоположный, а вычитаемое и уменьшаемое -- местами. Для упрощения операции вычитания и сведения ее к операции сложения, так чтобы операция алгебраического сложения в машине выполнялась единообразно, как известно, применяют специальные способы представления отрицательных чисел. 11редставление (изображение) чисел в соответствии с формулой или разных кодах.
11апример, порядок числа может быть представлен в прямом, а мантисса В ДОпОлнительпОМ кОдах и т. и. Таким образом, используя дополнительный код., операцию алгебраического сложения можно свести к арифметическому сложению кодов чисел, распространяющемуся и на, разряды зна,ков, которые рассматриваются как старгпие разряды числа. Алгебраическое слОжение допОлнительных кОдОВ, Включая раз1эяды знакОВ (если единица пе1теноса из разряда знака, отбрасывается) дает следунвций результат: если алгебраическая сумма положительна, то результат получается в прямом кодс; если алгебраическая сумма отрицательна,, то результат получается в дополнительном коде. Сказанное выше относится лишь к случаю, когда модуль полученной суммы меньше единицы. Однако при сложении двух чисел, модуль каждого из которых меньше единицы, может получиться сумма, модуль которой бо.льше или равен единице (так называемое переполнение разрядной сетки мантиссы).
Для Обнаружения такого переполнения с учетом, что модуль суммы двух таких чисел всегда меньше двух, используют дополнительный разряд. Код, в котором имеется такой дополнительный разряд, называют модифицированны.м. В модифицированных кодах этот разряд используется для дублирования знака числа, т.е. знак «+» обозначается 00, а « — » — двумя максимальными цифрами системы счисления (для двоичной системы счисления — 11). Правила переноса из разряда знаков остаются прежними и зависят от кода представления числа.
На переполнение же разрядной сетки, т.е. на то, что модуль суммы 1 < (В + Я( с 2, указывает несовпадение цифр в знаковых разрядах. 11апример, для двоичной системы счисления комбинации 01 в этом случае соответствует положительное, а 10 отрицательное число. Примеры алгебраического сложения чисел в доттолпительном коде: 1. В = 10 при 4-разрядной сетке ( —;7 123) —;(-6 344) — » в дополнительном коде: 0 7123 9 3656 1 (О) 0779 — + 0779 7 Т ~ код знака 'плюс' отбрасывается То же в модифицированном дополнительном коде: 00 7123 99 3666 1 (00) 0779» -:- 0779 Т ~ переполнения разрядной сетки нет ~ код дублированного знака «ил~ос" отбрасывается 2. В = 10 при 1-разрядной сетке (+ 7123) — (-6344) В модифицированном дополнительном коде 00 7123 00 6344 (01) 3467 — — 0779 переполнение разрядной сетки положительного числа 3.
В = 10 при 4-разрядной сетке (-7123),-(-6344) В модифицированном дополнительном коде 99 2877 99 3656 1 ~98) 6533 Т ~ переполнение разрядной сетки положителыюго числа отбрасывается 4. В = 10 при 4-разрядной сетке (-1234)-' (-2566)- в дополнительном коде: 9 8766 9 7434 1 (9) 6200 — -3800 тт ~ код знака "минус" отбрасывается То же в модифицированном дополнительном коде: 99 8766 99 7434 ! (99) 6200- -3800 Т ~ переполнения разрядной сетки нет ~ код дублированного знака "минус' отбрасывается Итак, в общем случае сложение и вычитание в машинах с плавающей точкой состоит из следующих этапов: (1) сравнение порядков чисел: (2) выравнивание порядков чисел; (3) перевод мантисс слагаемых в дополнительный модифицированный код; (4) сложение мантисс; (5) исправление нормализации вправо или влево; (6) перевод мантиссы результата в прямой код; (7) выдача результата с учетом порядка.
Умножение и деление. Пусть опять имеются два нормализованных числа Х~=Л!д В 'иХз=М~ В'. Тогда Х,. Х = ЛХ, - В" М~. В~' = (ЛХ~ Мз)В"'~г'-; Х,~Х, = (М, - В'л)ДМ, В'-) = (М,/М,)В'-~~. В соответствии с этими соотношениями при умножении порядки чисел складываются, а мантиссы перемножаются. При делении порядок частного определяется разностью порядков делилюго и делителя, а мантисса частного равна частному от деления мантисс делимого и делителя.
Знак мантиссы произведения или частного определяется следующим образом. Так как знак мантиссы «минус» кодируется в мап<ине единицей, .а «плюс» нулем, то можно ввести функцию знакового разряда / О, знак «плюс». 1, знак «минус . Тогда имеем 6( «1 ' Х2) 6(<И1 Л12) 6(М) + 6(Л'12)> 6(Х</Х2) — 6(ЛХ>/ЛХ2) — 6(ЛХ1) + 8(Л«2), причем единица переноса, если она появляется, пропадает. Таким образом, правило вычисления знака арифметизировапо. При выполнении операций умножения и деления особую роль играет операция сдвига.чисел. Сдвиг числа в системе счисления с основанием В на и позиций эквивалентен умножению этого числа на В", где и - целое. Если и - положительное, то сдвиг осуществляется на и разрядов влево; если и - отрицательное, то сдвиг осуществляется па 71 разрядов вправо. При сдвиге чисел вправо или ьлево надо сохранять содержимое знакового разряда.
При сдвиге положительного числа влево пропадают ш<фры разрядов, расположенных перед знаковым разрядом, а в появляющихся справа разрядах располагаются нули. Если, например, мантисса со знаком записана в виде Оа<а2аз .., а, то после сдвига на, один разряд влево получится число ОП262...
а О. При сдвиге вправо пропадая>т разряды, начиная с самого правого, .а в появляющиеся слева разряды заносятся нули: при сдвиге вправо на один разряд той же мантиссы получиться число 00616262... а«1. Сдвиг отрицательных чисел, представленных в дополнительном коде, выполняется по особым правилам, определяющим модифицированный сдвиг.
При таком сдвиге дополнительный код числа Х преобразуется в дополнительный код числа Х В". При сдвиге числа вправо на и разрядов (и ( 0) во все освобождающиеся слева разряды должна быть занесена старшая цифра основания системы счисления (т.е.  — 1), т.е.
цифра, совпадающая со знаком числа; при сдвиге числа влево освобождающиеся справа разряды заполняются нулями. В зависимости от организации умножения резулыат может иметь код одинарной или двойной длины. Как правило, код двойной длины приходится округлять до одинарного. Итак, при умножении чисел с плавающей точкой выполняются следующие действия: 1) по приведенной выше формуле определяется знак результата (произведения); 2) алгебраическим сложением порядков сомножителей вычисляется порядок произведения; 3) последовательным выполнением операций сдвига и арифметического сложения производится г<еремножение мантисс; 4) результат округляется; 5) если надо, полученный результат нормализуется. Микрокоманда арифметического сдвига является частью микропрограммы вещественного умножения, выступаю<цей на традиционном ма>пинном уровне уже как единая машинная команда.
Деление является одной из самых трудоемких операций, и на, ее выполнение в машинах затрачивается гораздо больше ресурс<>в,чем на выполнение других арифметических операций. Долгое время в вычислительных машинах операция деления реализовывалась путем последовательности операций вычитания и сдвига. Например,изве<тен метод деления с 6<>сс7пй>*06яс»и<ем Осгп<1>пка. Он заклю 1ается В следу>ощем: 1) в соответствии с приведенной формулой определяется знак част11ого; 2) вычитанием порядка делителя из порядка делимого находится порядок частного; 3) л1аптисса делимого делится на мантиссу делителя путем вычитания делителя из полученного положительного остатка пред»1дущей разности, сдвинутого на один разряд влево, Если остаток отрицателен, то восстанавливается прежний остаток и сдвигается на один разряд влево. При получс нии отрицательного остатка в частное заносится нуль, в противном случае единица.
При определении первой цифры частного за остаток принимается Все делимое; 1) результат округляется; 5) если надо, полученный результат нормализуется. В некоторых случаях этот порядок выполнения действий может быть нарушен. Если, например, делимое равно нулю, то деление как таковое не производится, а, в качестве частного принимается нуль. То же самое может происходить при умножении, если один из сомножителей равен нулю. Порядок действий может быть изменен и в том случае, если в результате вычитания (деления) или сложения (умножения) порядков полученный порядок окажется меньше минимального отрицательного. В этом случае сразу же будет сформирован пулевой результат без выполнения каких либо дальнейших действий.