Сумиране на числа с плаваща запетая
Сега ще направим допълнение към статията за еднобайтови числа с плаваща запетая Числото с единична точност IEEE 754 има толкова много битове, че е по-лесно да се обясни как работи сборът на числата с плаваща запетая, като се използва примерът за най-малкото представяне на число с плаваща запетая.
Добавянето е лесно! Да предположим, че трябва да добавите две числа с плаваща запетая X и Y.
Например показателят Y е по-малък или равен на показателя X. Нека показателят Y е равен на y, а X, съответно, x
Алгоритъмът за добавяне изглежда така:
Добавете разликата x-y към експонентата на Y. Преместете мантисата на Y с x-y цифри, за да компенсирате промените в експонентата.
Нека съберем следните две числа:
Нека да преминем през всички стъпки отново:
-
Представяне на числа в нормализирана форма. Така изрично представяме скритата единица.
Нормализираният X е 1,110x2 2, а Y е 1,000x2 0
За да продължим с процеса на сумиране, трябва степените на двете числа да са равни, правим това, като пренаписваме стойността на Y. Това денормализира Y, но стойността съответства на нормализираното Y.
Добавете разликата x-y към експонентата на Y. Преместете мантисата на Y с x-y цифри, за да компенсирате промените в експонентата.
Разликата в степента е 2. И така, нека добавим 2 към експонентата Y и изместим скритата единица наляво с 2. Така получаваме 0,0100x2 2 . Това е еквивалентно на старата Y стойност. Нека го наречем коригираната стойност на Y'
Събиране на две мантиси от числа X и коригирано Y.
Нека добавим 1,110 към 0,01. Сума: 10.0. Показателят все още е равен на степента на числото X, което от своя страна е равно на две.
Ако сумата в предишната стъпка измества единицата за нормализиране, тогава трябва да изместите експонентата и да повторите сумирането.
В нашия случай сумата от 10,0 има два бита вляво от точката. За да нормализираме числото, трябва да преместим точката наляво с 1 цифра и да увеличим експонентата с 1. Крайният резултат: 1000 x 2 3 .
Преобразуване в еднобайтово представяне с плаваща запетая
Нека съберем следните две числа:
Нека да преминем през всички стъпки отново:
-
Представяне на числа в нормализирана форма. Така изрично представяме скритата единица.
Нормализираният X е 1,110x2 2, а Y е 1,000x2 -1
За да продължим с процеса на сумиране, трябва степените на двете числа да са равни, правим това, като пренаписваме стойността на Y. Това денормализира Y, но стойността съответства на нормализираното Y.
Добавете разликата x-y към експонентата на Y. Преместете мантисата на Y с x-y цифри, за да компенсирате промените в експонентата.
Разликата в степента е 3. И така, добавете 3 към експонентата Y и преместете скритата единица наляво с 3. Така получаваме 0,0100x2 3 . Това е еквивалентно на старата Y стойност. Нека го наречем коригирано.Y' стойност
Събиране на две мантиси от числа X и коригирано Y.
Нека добавим 1,110 към 0,00111. Сума: 1.11111. Показателят все още е равен на степента на числото X, което от своя страна е равно на две.
Ако сумата в предишната стъпка измества единицата за нормализиране, тогава трябва да изместите експонентата и да повторите сумирането.
В нашия случай сумата 1.11111 има един бит вляво от точката. Така номерът вече е представен в нормализиран вид и не е необходимо да извършваме допълнителни действия. Краен резултат: 1.111111x2 3 .
Преобразуване в еднобайтово представяне с плаваща запетая
Имаме само 3 бита, за да представим мантисата, но имаме 5 бита в отговора. Очевидно това е подобно на необходимостта от хардуерно закръгляване на число с плаваща запетая.
Но за простота ще отрежем допълнителните два бита. След съкращаване получаваме 1,111x2 +2. Нека го поставим във формат с плаваща запетая.