Последната редакция на тази книга е от 2021 година.

 

 

V.4  Операции върху числа, представени във форма с плаваща запетая чрез техниката на скрития бит

 

 

      Според техниката на скрития бит, представена подробно в книга [1], при представяне на едно число във форма с плаваща запетая е необходимо да се уточни предварително неговия формат в два аспекта:

a Дали става въпрос за представяне на числото в паметта, когато се използува така нареченият “Memory format” (MemF), или става въпрос за представяне на числото в АЛУ при изпълнение на операция – “Operation format” (OpF);

a Кой от форматите по отношение на точността се има предвид (Single, Double или Extended Precision), (SP, DP, EP).

      При съхраняване на числата в паметта скритият бит присъства единствено във формата Extended Precision.

      Когато числата се извличат от паметта и се подготвят за участие в операция в АЛУ, те съдържат скрития бит представен явно в състава на мантисата на числото. Възстановената в явен вид старша единица на мантисата се появява отляво на запетаята, ето защо нормализираната мантиса на подготвеното за операция число има вида:

      Така възможните гранични стойности на двоичната мантиса са:

      В резултат на това положение на запетаята на мантисата, в чиято цяла част винаги има една цифра, отместването на порядъка е с една единица по-малко. Тогава характеристиката на така представяните числа се получава по формулата:

H = p+(D-1) = p+(2(k-1)-1)  .                        (98)

      Граничните стойности на характеристиката: H=0 и H=max са резервирани за изобразяване на изключителните ситуации. Стойността H=0 се използува за представяне на числото нула”, а стойността H=max за представяне на абстракциите безкрайност и NAN”.

 

 

 

ПРИМЕР  170.  Да се изпълни операция събиране  Z=X+Y  на числата  X=-71  и  Y=49,  които са представени в разрядна мрежа с обща дължина  n=12[b]=m+k,  където  k=4[b]  е дължината на полето за представяне на характеристиката, а  m=8[b]  е дължината на полето за представяне на мантисата (без скрития бит).

 

      При тази дължина на полето за характеристиката (4 [b]), отместването е

Във форма с плаваща запетая числото X има вида:

т.е.

      Последният вид на числото се характеризира с мантиса, която е нормализирана в смисъла на техниката на скрития бит.

      За да се попълни разрядната мрежа с изображението на числото X е необходимо да се получи характеристиката на числото, т.е.

.

И така, подготвеното за операция число има вида:

 

 

при който се вижда явно изобразената цифра в цялата част на мантисата, заради която дължината на разрядната мрежа е увеличена с единица:  n+1=(m+1)+k.

 

      Второто число

се представя по същия начин. Характеристиката му се определя така:

.

Подготвеното за операция число има вида:

 

 

      Така представените числа встъпват в операция събиране. Тъй като числото Y има по-малка характеристика

за характеристика на резултата се приема тази на числото X, a в етапа “изравняване на порядъците”, мантисата на Y се измества надясно на 1 разряд и приема вида:

+0,1100010  ,

след което се извършва събирането:

 

 

      Получената сума не е нормализирано число в смисъла на скрития бит, ето защо чрез две измествания наляво тя се нормализира, т.е.

При това от характеристиката се изваждат последователно две единици и тя получава стойността

Така окончателно от знак, характеристика и мантиса се сглобява съдържанието на разрядната мрежа, представящо получената сума:

 

 

      Когато получената сума се записва в оперативната памет на процесора, тя ще получи следния вид:

 

 

 

в който липсва старшата единица (цялата част на мантисата).

 

      Според формата за представяне, това съдържание съответства на следното число:

 

 

 

ПРИМЕР  171.  Да се изпълни операция събиране  Z=X+Y  на числата  X=10,5  и  Y=99,625,  които са представени в разрядна мрежа с обща дължина  n=12[b]=m+k,  където  k=4[b]  е дължината на полето за представяне на характеристиката, а  m=8[b]  е дължината на полето за представяне на мантисата (без скрития бит).

 

      Във форма с плаваща запетая числата X и Y имат вида:

      Последният вид на числата се характеризира с мантиса, която е нормализирана в смисъла на техниката на скрития бит. Характеристиките на числата са:

      Така подготвените за операция числа имат вида:

 

 

      Вижда се, че значещата част на числото Y е по-дълга от предвиденото за мантисата на числото поле и двата младши разряда ще бъдат загубени. Така числото ще бъде изобразено неточно. Допусната грешка е принципна и не може да бъде отстранена. Все пак трябва да отбележим, че ако числото беше изобразявано без прилагане на техниката на скрития бит, то загубена щеше да се окаже и цифрата, стояща в най-младшия разряд на мантисата (бит №0). Така скритият бит води до повишаване точността на изчисленията.

      Представените по този начин числа встъпват в операция събиране.

      Тъй като числото X има по-малка характеристика

за характеристика на резултата се приема тази на числото Y, a в етапа “изравняване на порядъците”, мантисата на X се измества надясно на 3 разрядa и приема вида:

0,0010101 .

      Трябва да се помни, че този етап е също източник на принципна грешка. След това се извършва събирането:

 

 

      Получената сума е нормализирано число в смисъла на скрития бит, т.е.

Така окончателно от знак, характеристика и мантиса се сглобява съдържанието на разрядната мрежа, представящо получената сума:

 

 

      Записаната в оперативната памет на процесора сума ще има следния вид:

 

  

 

в който липсва старшата единица (цялата част на мантисата).

      Според формата за представяне, това съдържание съответства на следното число:

Полученото число е по-малко от истинската сума, която е  110,125.

 

 

 

ПРИМЕР  172.  Да се изпълни операция събиране  Z=X+Y  на числата  X=248  и  Y=21,  които са представени в разрядна мрежа с обща дължина  n=12[b]=m+k,  където  k=4[b]  е дължината на полето за представяне на характеристиката, а  m=8[b]  е дължината на полето за представяне на мантисата (без скрития бит).

 

      Във форма с плаваща запетая числата X и Y имат вида:

      Последният вид на числата се характеризира с мантиса, която е нормализирана в смисъла на техниката на скрития бит. Характеристиките на числата са:

      И така, подготвените за операция числа имат вида:

 

 

      Тъй като характеристиката на числото Y е по-малка от тази на X, то за характеристика на резултата първоначално се приема тази на числото X:

Мантисата на второто число се денормализира чрез изместване на 3 разряда надясно, при което тя приема вида:

.

      Представените по този начин числа встъпват в операция събиране.

 

 

      Както може да се види от знаците на числата, при извършеното събиране е настъпило положително препълване. Ето защо кодовата сума не е допълнителният код на сумата от числата. Получената сума е число по-голямо от числото

т.е. то е ненормализирано отляво. Известно е обаче, че това препълване е с не повече от един порядък (спрямо максимално възможния) и лесно може да бъде отстранено, ако получената сума се измести надясно на един бит. Тогава мантисата на резултата ще получи вида:

За да се запази същото количество, към характеристиката трябва да се прибави единица и тя ще получи стойността:

Тази стойност, за дефинираната тук разрядна мрежа, е максимално представимата, ето защо полученият тук резултат е изключение и следва да се отбележи с признак “NAN”. Той ще бъде фиксиран във вида:

 

     

 

 

 

ПРИМЕР  173.  Да се изпълни операция изваждане  Z=X-Y  на числата  X=248  и  Y=21,  които са представени в разрядна мрежа с обща дължина  n=12[b]=m+k,  където  k=4[b]  е дължината на полето за представяне на характеристиката, а  m=8[b]  е дължината на полето за представяне на мантисата (без скрития бит).

 

      Този пример за операция изваждане ще се изпълни с операндите от предидущия пример, така че тяхното представяне ще приемем за вече изложено.

      Тъй като характеристиката на числото Y е по-малка от тази на X, то за характеристика на резултата първоначално се приема тази на числото X:

Мантисата на второто число се денормализира чрез изместване на 3 разряда надясно, при което тя приема вида:

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

      Представените по този начин числа встъпват в операция изваждане:

 

 

      Полученият резултат е положително число, нормализирано в смисъла на скрития бит, ето защо може веднага да се сглоби окончателният вид на резултата:

 

 

      Според формата за представяне, това съдържание съответства на следното число:

 

 

 

ПРИМЕР  174.  Да се изпълни операция изваждане  Z=X-Y  на числата  X=496  и  Y=-51,  които са представени в разрядна мрежа с обща дължина  n=12[b]=m+k,  където  k=4[b]  е дължината на полето за представяне на характеристиката, а  m=8[b]  е дължината на полето за представяне на мантисата (без скрития бит).

 

      Във форма с плаваща запетая числата X и Y имат вида:

      Характеристиките на числата са:

      И така, подготвените за операция числа имат вида:

 

 

      Тъй като характеристиката на числото Y е по-малка от тази на X, то за характеристика на резултата първоначално се приема тази на числото X:

Мантисата на второто число се денормализира чрез изместване на 15-12=3 разряда надясно, при което тя приема вида:

Тази мантиса губи младшата единица от значещата си част и участва в операцията със загуба на точност.

      Представените по този начин числа встъпват в операция изваждане:

 

 

      Получената кодова сума не е допълнителният код на сумата от числата тъй като е настъпило положително препълване. Това препълване обаче е с не повече от един порядък, така че резултатът може да се нормализира като се измести надясно на един бит. Тогава мантисата на резултата ще добие вида

      Неточността на мантисата при това се засилва,тъй като тя губи най-младшата си единица.

      Нормализацията на мантисата на резултата води до корекция на характеристиката, чиято временна стойност се съхранява в брояча на характеристиката: (БрН)=(БрН)+1=15+1=16. Тази стойност обаче препълва основното поле на този брояч (младшите му 4 разряда, т.е. (БрН)=1 0000; V=1). Това е препълване в полето на характеристиката. Полученият резултат е неверен и за дефинираната тук разрядна мрежа това означава, че е настъпило окончателно “препълване при плаваща запетая”.

 

 

 

ПРИМЕР  175.  Да се изпълни операция изваждане  Z=X-Y  на числата  X=0,11001.2-6  и  Y=0,10101.2-4,  които са представени в разрядна мрежа с обща дължина  n=12[b]=m+k,  където  k=4[b]  е дължината на полето за представяне на характеристиката,  а  m=8[b]  е дължината на полето за представяне на мантисата (без скрития бит).

 

      Във форма с плаваща запетая и скрит бит числата X и Y получават вида:

      Характеристиките на числата са:

      И така, подготвените за операция числа имат вида:

 

 

      Тъй като характеристиката на числото X е по-малка от тази на Y, то за характеристика на резултата първоначално се приема тази на числото Y:

      Мантисата на първото число се денормализира чрез изместване на 2 разряда надясно, при което тя приема вида:

.

      Представените по този начин числа встъпват в операция събиране.

 

 

      Получената сума от двете мантиси е отрицателно число, което не е нормализирано в смисъла на скрития бит. За да се нормализира, получената сума трябва да се измести наляво на два разряда. Тогава мантисата ще има вида:

а от предварителната стойност на характеристиката на резултата ще бъдат извадени две единици:

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

 

 

      Получената ситуация се отнася към изключителните. Според теоретичните определения, представени в книга [1], полученият резултат се признава за равен на числото “машинна нула”, независимо от стойността на скрития бит. Така окончателният резултат ще бъде:

 

 

 

      Ако обаче АЛУ е инициализирано за работа в режим на недостиг, то първоначалният вид на резултата ще бъде запазен – той ще има вида:

 

 

 

и тогава ще говорим, че числото Z е съхранено в паметта “с ниво на недостиг нула”. В още по-тежките случаи, когато стойността нула в полето на характеристиката се достига преди мантисата на резултата да се нормализира, същият може да се съхрани с ниво на недостиг по-голямо от нула. С това следващите изчислителни резултати, в които той ще участвува, ще бъдат значително по-точни.

 

 

 

ПРИМЕР  176.  Да се изпълни операция умножение  Z=X.Y  на числата

X = 0,110101.2+2   =   3,3125      и      Y = -0,101101.2-2   =   -0,17578125   ,

които са представени в разрядна мрежа с обща дължина  n=12[b]=m+k,  където  k=4[b]  е дължината на полето за представяне на характеристиката, а  m=8[b]  е дължината на полето за представяне на мантисата. Произведението от тези две числа е

Z    -0,582275390625.

 

      Във форма с плаваща запетая и скрит бит числата X и Y получават вида:

      Характеристиките са:

      И така, подготвените за операция числа имат вида:

 

 

      Характеристиките на числата се събират по следния начин:

 

 

      Събирането на характеристиките е без препълване и получената временна сума се записва в брояча на характеристиката.

 

 

      Получената мантиса:

е число с двойна дължина. Освен това то е ненормализирано, което налага неговото изместване надясно на един бит. Така мантисата

става нормализирана по стандарта със скрит бит и след отрязване на младшите й цифри тя може да се запише с единична дължина в разрядната мрежа, т.е.

      Нормализацията на произведението изисква прибавяне на една единица към характеристиката на резултата, което се извършва в брояча на характеристиките и тя получава стойността

      Тази характеристика обаче не е вярна! Неверният резултат се дължи на принципна грешка в сумата от характеристиките:

      Както може да се види от получения по-горе израз, характеристиката на произведението съдържа един път в повече отместването {D-1}. Тъй като отнемането на основната му съставяща D се реализира в процеса на запис в брояча на характеристиката автоматично, остава да се добави една единица, отнета в повече. В примера тук това ще направим сега:

      Така всички елементи на структурата на разрядната мрежа са получени и произведението може да бъде сглобено окончателно:

 

 

      Изобразеното съдържание представлява числото:

      Както може да се види, резултатът е по-малък от истинската стойност, което се дължи на загубата на точност в отделните етапи на алгоритъма и зададения формат на разрядната мрежа.

 

 

 

ПРИМЕР  177.  Да се изпълни операция деление  Z=X/Y  на числата  X=0,1101.2+4  и  Y=-0,1011.2+2,  които са представени в разрядна мрежа с обща дължина  n=12[b]=m+k,  където  k=4[b]  е дължината на полето за представяне на характеристиката, а  m=8[b]  е дължината на полето за представяне на мантисата.

 

      Във форма с плаваща запетая и скрит бит числата X и Y се записват както следва:

      Частното е числото

Z = X/Y = -4,72727272727272727272727272727273  .

То е неточно представено, защото 16-тата двойка повтарящи се цифри (72) е закръглена на 73. Характеристиките на числата са:

      И така, подготвените за операция числа имат вида:

 

 

      Характеристиките на числата се изваждат по следния начин:

 

 

      При това изваждане няма препълване и тригерът на препълването остава в състояние нула (ТП=0). Така получената на изхода на суматора сума се коригира автоматично при записването си в брояча на характеристиката. Броячът приема стойността  (БрН)=0 1010, където в неговия най-старши разряд се записва нула, а в  [k-1]–я следното:

      Тази все още неокончателна характеристика на частното, която апаратурата получава, не е вярна! От една страна неверният резултат се дължи на принципната грешка в разликата на характеристиките:

която е равна на порядъка на частното. От друга страна извършената вече автоматична корекция при записа на разликата в брояча на характеристиката представлява сумата

който в смисъла на скрития бит е също неверен, тъй като съдържа една единица в повече. Необходимият ни верен резултат трябва да има стойността

който може да се получи от наличната в брояча стойност чрез отнемане на една единица:

      След първоначалното изваждане и коригиране на характеристиките следва делението на двете мантиси. Тук то е извършено по метода без възстановяване на остатъците по схемата с неподвижен делител по модул:

 

 

      Полученото частно

е число по-голямо от единица и следователно се приема за нормализирано в смисъла на скрития бит.

      Така окончателно от знак, характеристика и мантиса в разрядната мрежа се сглобява резултатът:

 

 

      Това съдържание представя числото:

      Този резултат се различава от по-точния, който е -4,72(72). Това се дължи в случая на неточното деление.

 

 

 

Следващият раздел е:

6.  Преобразуване на формите и на форматите на числата