Смекни!
smekni.com

Сложения и вычитания чисел с плавающей запятой

-миразрядныйсчётчик натриггерах типаD серии К155

(К155ТМ5 – 4 D-триггера)


Анализпрограммы напримерах

Y1= 0 1001101 110100101110011011100011 = 0 4D D2E6E3

X1= 1 1001011 110001100101110110100111 = 1 4B C65DA7

Выравниваниепорядков:

МК: РгС>РгD (01001101>01001011)переход на МК1

MК1:сдвигаем мантиссуХ1 вправо на 4разр. получаем000011000110010111011010 и увел.порядок Х1 на1 получаем 01001100переходна МК

МК: РгС>РгD (01001101>01001100)переход на МК1

МК1:сдвигаем мантиссуХ1 вправо на 4разр. получаем000000001100011001011101 и увел.порядок Х1 на1 получаем 1001101переходна МК

МК:РгС=РгD(01001101=01001101)

Порядкивыравненны.


Сложениемантисс:

ТгЗн1ТгЗн2 переходна М3

М3:ТгЗн1 0 РгВ =

(00110010 111111110011100110100010); РгСм=РгА+ РгВ + 1 = 01011011 110100100010000010000110;

См[0]= 0 переходна М1

М1:РгСм [ 1 7]: = Сч1 [1 7] = 1001101;

РгСм[0] :== еслиТг3н1=0 то 0;

ШИВых:= РгСм = 0 1001101110100100010000010000110 = 04D D22086;

КОНЕЦ.


Y2= 0 1001100 110100101110011011100011 = 0 4СD2E6E3

X2= 0 1001101 110001100101110110100111 = 04D C65DA7

Выравниваниепорядков:

РгD> РгСпереход на МК2

МК2:сдвигаем мантиссуY2 вправо на 4 разр.получаем 000011010010111001101110; уменьшаем порядок Х2 на1 получаем 1001100; РгD = РгС

Порядкивыравненны.


Сложениемантисс:

ТгЗн1= ТгЗн2 См = РгА + ргВ =00000000 110100111000110000010101; переходна М1

М1: РгСм [ 1 7]: = Сч1 [1 7] = 1001110;

РгСм[0] :== еслиТг3н1=0 то 0;

ШИВых:= РгСм = 0 1001101110100111000110000010101 = 04D D38C15;

КОНЕЦ.


Сложенияи вычитаниячисел с плавающейзапятой

1.Производитсявыравниваниепорядков чисел.Порядок меньшею(по модулю) числапринимаетсяравным порядкубольшего числа,а мантиссаменьшего числасдви­гаетсявправо на числоS-ичных разрядов,равное разностипорядков чисел.

2.Производитсясложение (вычитание)мантисс, вре­зультатечего получаетсямантисса суммы(разности).

3. Порядокрезультатапринимаетсяравным порядкубольшего числа.

4.Полученнаясумма (разность)нормализуется.

Примем,что числа сплавающейзапятой имеютоснованиепорядка S = 16.

Первоеслагаемое(уменьшаемое)поступает навходной регистрРг1, второе слагаемое(вычитаемое)— на входнойрегистр Рг3.Знаки слагаемыххранится втриггерахзна­ков Тг3н1и Тг3н2. Смещенныепорядки слагаемыхпере­сылаютсяв регистры РгСи РгD. Схема СОЛОприменяетсядля сравненияи выравниванияпорядков слагаемых.Сум­матор См,его входныерегистры РгАи РгВ и выходнойре­гистр РгСмиспользуютсяпри сложении(вычитании)ман­тисс, а такжепри передачемантисс в процедурахвыравни­ванияпорядков инормализациирезультата.

Операциясложения (вычитания)может бытьподразде­ленана следующиеэтапы: 1) приемоперандов, 2)выравни­ваниепорядков, 3) сложениемантисс и 4)нормализациярезультата.

Приемоперандовописываетсяследующеймикропрограммой:

РгЗ: = ШИВх,РгВ: = 0, Тг3н1: = Рг3[0]

;

Рг1: = ШИВых,РгА: = 0, Тг3н2: = еслисложение тоРг1[0]иначе

;

Выравниваниепорядков начинаетсяс их сравнения.Ман­тисса числас меньшим порядкомпри выравниваниисдви­гаетсявправо на числоразрядов, равноеразности порядков.Посколькурассматриваемыечисла с плавающейзапятой имеютS = 16, сдвигосуществляетсяшестнадцатеричнымиразрядами, т.е. каждый сдвигпроизводитсяна четыре двоичныхразряда.

Присравнениипорядков возможныпять случаев:

1)

(m— числоразрядов мантиссы).В ка­честверезультатасуммированиясразу же можетбыть взятопервое слагаемое,так как привыравниваниипорядков всеразряды мантиссывторого слагаемогопринимаютнулевое значение;

2)

.В качестверезультатасуммированияможет бытьвзято второеслагаемое;

3)

.Можно приступитьк суммированиюмантисс;

4)

Мантиссавторого слагаемогосдвигаетсяна
разрядов вправо,затем производитсясум­мированиемантисс;

5)

Передвыполнениемсумми­рованиямантисс производитсяcдвигна
разрядов вправомантиссы первогослагаемого.

Запорядок результатапри выполнениисуммированияпринимаетсябольший изпорядков операндов.

Выравниваниепорядковосуществляетсяследующимобразом. Смещенныйпорядок числаХ из РгЗ передаетсяв регистр РгD,РгСОЛО и в счетчик,соединенныйс выхо­домРгСОЛО. Затемв РгС передаетсясмещенныйпоря­док числаY:

РгС: = О,PD [0]: = 0, PгD[1 7] := Рг3 [1 7];

РгСОЛО: = РгСPгD;

Сч1: = РгСОЛО;

РгС [О]: = 0, РгС [17] =Pг[1 7];

Послеэтого начинаетсясравнениепорядков чиселХ и Y наСОЛО и сдвигмантиссы числас меньшим порядкомвправо,

Длятого чтобыучесть случаи1 и 2, возникающиепри сравнениипорядков, и неделать лишнихсдвигов ман­тиссы,превратившейсяв процессевыравниванияпорядков в 0,на счетчикециклов СчЦфиксируетсяпредельноечисло сдвигов,равное количествушестнадцатеричныхцифр ман­тиссы:

СчЦ:= 6;

Привыполнениисдвига на одиншестнадцатеричныйразряд содержимоеСчЦ уменьшаетсяна 1. При СчЦ = 0сдвиги прекращаютсяи в качестверезультатаберется большееслагаемое.

Микропрограммавыравниванияпорядков:

МК:

еслиРгС > РгD тоМК1 иначееслиРгС = РгD тоМКЗ иначеМК2;

MK1:

PгB [831]:=PгЗ[831];

РгСм: = П(4) См,РгСм [0 3]: =0, Сч1 := Сч1+1

;

Рг3[831]:=РгСм[8 31]; РгD:=Сч1,СчЦ: = СчЦ - 1

;

еслиСчЦ 0 тоМК;

РгВ: = 0, РгА: =Рг1, РгСм := См;

ШИВых: = РгСм;

конец

;

МК2:

РгА[8 31] :=Рг1 [8 31];

РгСм:= П (4) См, РгСм [0 3] : = 0, Сч1 := Сч1-1

;

Рг1 [131]: =РгСм[8 31], РгD: =Сч1,СчЦ: =СчЦ -1,

еслиСчЦ 0, тоМК4 иначеРгА: =0, РгВ: =Рг3,РгСм: =См, ШИВых:= РгСм,

конец

;

МК4:

еслиРгС >PгD тоМК2;

PгD[0]: = 0,РгD[1 7]: = Рг3[1 7], РгС = 0;

РгСОЛО : = РгСPгD;

Сч1: = РгСОЛО

;

МКЗ:

РгСм: = 0,Pгl [0 7] : = РгСм, РгЗ [0 7] : = РгСм

;


Послевыравниванияпорядков модулимантисс хра­нятсяв Pгlи РгЗ в разрядахс 8-го по 31-й, ихзнаки в Тг3н2 иТг3н1, а порядокрезультата в Сч1.

Сложениемантисс. Анализируютсязнаки мантисси при равенствезнаков модулимантисс складываются.Если оказывается,что См [7] = 1, то возниклопереполнениепри сложениимантисс. В случаепереполнениямантисса суммысдвигаетсяна четыре двоичныхразряда (одиншестнадцатеричныйразряд) вправо,а порядокувеличиваетсяна 1 (Сч1: = Сч1 + 1). Еслипосле этогоСч1 [0] = 1, то формируетсяпризнак прерыванияиз-за переполненияпо­рядка. Еслипереполнениянет, то в РгСмформируетсяре­зультатоперации, длячего содержимоеСч1 [1 7] за­носитсяв РгСм [1 7], в РгСм[0]передаетсязнак, а в РгСм[8 31]— мантиссасуммы.

Приразличныхзнаках мантиссотрицательнаямантисса передаетсяна входнойрегистр сумматорав обратном кодеи производитсясуммированиеее с прямымкодом положи­тельноймантиссы и 1,прибавляемойк младшемуразряду сумматора.Знак результатафиксируетсяв триггерезнака. От полученногорезультата,если он отрицателен,берется егомодуль. Еслирезультатнормализован(См [8 11] 0),то на РгСм заносятсязнак результата(по значениютриггера знака),порядок позначению Сч1и модуль мантиссы.

Еслирезультат ненормализовани нет исчезновениязначимости(мантисса неравна 0), производитсянормали­зация.Мантисса результатасдвигаетсявлево и одновре­менноуменьшаетсяпорядок результата(Сч1: = Сч1 -1). При отрицательномпереполнениипорядка (Сч1[0] = 1) формируетсяпризнак исчезновенияпорядка. Еслинормализациязавершаетсябез исчезновенияпорядка, фор­мируетсярезультатоперации изкода знака,порядка и мантиссы.

Микропрограммапроцедурысложения мантисс:


еслиТгЗн Тг3н2 тоМЗ;

РгА: = Рг1, РгВ:= РгЗ;

РгСм: = См;

еслиСм[7] = 1 тоМ2;

М1:

РгСм [ 1 7]: = Сч1 [1 7];

РгСм[0] :== еслиТг3н1=0 то 0 иначе1;

М:

ШИВых: = РгСм;

конец;

М2:

Сч1:=Сч1+1, РгСм:= П(4)См, РгСм[0 3]:=0;

еслиСч1[0]=0 то М1 иначепрерываниеиз-за переполненияпорядка;

МЗ:

еслиТг3н1=0 то РгА:=

,РгВ: = РгЗ иначе

РгА: = Рг1, РгВ: =

;

РгСм:=РгА+РгВ +1;

еслиСм[0]=0 то M4;

Рг3:=РгСм;

РгА:=0, РгВ: =

;

РгСм:=РгА +РгВ +1;

М4:

ТгЗн1:= РгЗ [0];

М5:

еслиСм [8 11] 0 тоM1;

еслиСм 0 тоМ6;

РгСм:= 0, прерываниеиз-за потеризначимости;

M6:

Сч1:=Сч-1, РгСм:= Л(4)См, РгСм[2831]:= 0;

РгЗ: = РгСм;

РгВ : = РгЗ, РгА:= 0;

РгСм: = См;

еслиСч1[0]=0 тоМ5;

РгСм:= 0, прерываниеиз-за исчезновенияпорядка;

Сложениеи вычитаниевыполняютсяприближенно,так как привыравниваниипо­рядковпроисходитпотеря младшихразрядов одногоиз слагаемых.В этом случаепогрешностьвсегда отрицательнаи может доходитьдо единицымладшего разряда.Чтобы уменьшитьпогрешность,применяютокруглениерезуль­тата.Для этого можетбыть использовандополнительныйразряд сумматора,в который послевыполнениясуммиро­ваниядобавляется1.

5