Формата на представяне на валидни (илиреални) числа, където се съхраняват като мантиса и експонента, са числа с плаваща запетая (може би точка, както е обичайно в англоговорящите страни). Въпреки това числото е с фиксирана относителна точност и променлива абсолютна. Представянето, което се използва най-често, е одобрено от стандарта IEEE 754. Математическите операции, които използват числа с плаваща запетая, се реализират в изчислителни системи, както хардуерни, така и софтуерни.
Точка или запетая
Подробният списък с десетични разделители съдържа тезиАнглоговорящи и англоговорящи страни, където в записите на числата дробната част се отделя от цялата с точка и затова терминологията на тези държави се нарича плаваща запетая – „floating point“. В Руската федерация дробната част традиционно се отделя от цялото със запетая, следователно исторически признатият термин "числа с плаваща запетая" обозначава същото понятие. Въпреки това и двата варианта са напълно приемливи днес в техническата документация и в рускоезичната литература.
Терминът "числа с плаваща запетая" идва отче позиционното представяне на число е запетая (обикновена десетична или двоична - компютър), която може да се побере навсякъде сред цифрите на низа. Тази функция трябва да се обсъди отделно. Това означава, че представянето на числа с плаваща запетая може да се разглежда като компютърна реализация на експоненциална нотация. Предимството на използването на това представяне пред представянето във формат с фиксирана точка и цяло число е, че диапазонът от стойности нараства значително, докато относителната прецизност остава същата.
пример
Ако запетаята в числото е фиксирана, тогава напишетеможе да бъде само в един формат. Например, дадени шест цели цифри в число и две цифри в дробна част. Това може да стане само по следния начин: 123456.78. Форматът с плаваща запетая дава пълен обхват за изразяване. Например са дадени същите осем цифри. Възможно е да има произволен брой опции за запис, ако програмистът не спести от задължението да създаде двуцифрено допълнително поле, където ще запише експонентите, които обикновено са 10, от 0 до 16, и общия брой цифри ще бъде десет: 8 + 2.
Някои опции за запис, които позволяватформат на числа с плаваща запетая: 12345678000000000000; 0,0000012345678; 123,45678; 1.2345678 и така нататък. Този формат дори има единица за скорост! По-скоро скоростта на изчислителната система, която фиксира скоростта, с която компютърът извършва операции, където има представяне на числа с плаваща запетая. Тази производителност се измерва в единици FLOPS (операции с плаваща запетая в секунда, което се превежда като брой операции в секунда с числа с плаваща запетая). Тази единица е основната при измерване на скоростта на изчислителна система.
структура
Напишете число във формат с плаваща запетаятрябва да бъде както следва, като се спазва последователността на задължителните части, тъй като тази нотация е експоненциална, където реалните числа са представени като мантиса и степен. Това е необходимо за представяне на твърде големи и твърде малки числа, те са много по-удобни за четене. Задължителни части: число за запис (N), мантиса (M), знак за степен (p) и степен (n). Последните два знака формират характеристиките на числото. Така че N = M . пп. Така се записват числата с плаваща запетая. Примерите ще варират.
1. Необходимо е да запишете числото един милион, за да не се объркате в нулите. 1000000 е нормално записване, аритметика. А компютърният изглежда така: 1.0 . 106. Тоест десет на шеста степен - три знака, вкоито отговарят на цели шест нули. Така се получава представянето на числа с фиксирана и плаваща запетая, където можете веднага да откриете разликите в правописа.
2. И такова трудно число като 1435000000 (един милиард четиристотин тридесет и пет хиляди) също може да се запише просто: 1,435 . 109, само. По същия начин със знак минус можете да напишете произволно число. Това е мястото, където числата с фиксирана и плаваща запетая се различават едно от друго.
Но това са големи числа, какво да кажем за малки? Да, също е лесно.
3. Например как да обозначим една милионна? 0,000001 = 1,0 . 10-6. Както записването на числото, така и неговото четене са значително улеснени.
4. И по-трудно? Петстотин четиридесет и шеста милиардна: 0,000000546 = 546 . 10-9. Тук. Обхватът на представяне на числата с плаваща запетая е много широк.
форма
Формата на числото може да бъде нормална илинормализиран. Нормално - винаги спазва прецизността на числата с плаваща запетая. Трябва да се отбележи, че мантисата в тази форма, независимо от знака, е на половината от интервала: 0 1, което означава, че 0 ⩽ a < 1. Не в нормална форма, числото губи своята точност. Недостатъкът на нормалната форма на число е, че много числа могат да бъдат записани по различни начини, тоест двусмислено. Пример за различна нотация на едно и също число: 0,0001 = 0,000001 . 102 = 0,00001 . 101 = 0,0001 . 100 = 0,001 . 10-1 = 0,01 . 10-2 и толкова повече е възможно.Ето защо компютърните науки използват различна, нормализирана форма на нотация, където мантисата на десетичните числа приема стойност от едно (включително) и по този начин до десет (не включително), и по същия начин мантисата на двоичните числа приема стойност от едно (включително) до две (не включително).
Следователно, 1 ⩽ a < 10.Това са двоични числа с плаваща запетая и тази форма на нотация улавя всяко число (освен нула) по уникален начин. Но има и недостатък - невъзможността да се представи нула в тази форма. Следователно информатиката предвижда използването на специален знак (бит) за числото 0. Цялата част от числото (висок порядък) на мантисата в двоично число, с изключение на нула, в нормализирана форма е 1 (неявна единица). Такава нотация се използва от стандарта IEEE 754. Позиционните бройни системи, при които основата е по-голяма от две (троични, кватернерни и други системи), не са придобили това свойство.
Реални числа
Реалните числа с плаваща запетая обикновено сате просто се случват, тъй като това не е единственият, но много удобен начин за представяне на реално число, сякаш компромис между диапазона от стойности и точността. Това е аналог на експоненциалната нотация, изпълнявана само в компютър. Числото с плаваща запетая е набор от отделни двоични цифри, които са разделени на знак (знак), поръчка (показател) и мантиса (богомолка).Най-често срещаният формат IEEE 754 представлява число с плаваща запетая като набор от битове, които кодират мантисата с едната част, степента с другата част, а знакът на числото се обозначава с един бит: нула е, ако е положителна, едно, ако числото е отрицателно. Целият ред се записва като цяло число (код с отместване), а мантисата е в нормализирана форма, дробната й част е в двоичната система.
Всеки знак е един бит, което показвазнак за пълно число с плаваща запетая. Мантисата и степента са цели числа, те заедно със знак представляват число с плаваща запетая. Редът може да се нарече степен или степен. Не всички реални числа могат да бъдат представени в компютъра в тяхната точна стойност, докато останалите са представени като приблизителни стойности. Много по-прост вариант е да се представи реално число с фиксирана точка, където реалната и целата част ще се съхраняват отделно. Най-вероятно по такъв начин, че на цялата част винаги се приписват X битове, а на дробната част - Y битове. Но архитектурите на процесора не познават този начин и затова се дава предпочитание на числото с плаваща запетая.
Събиране
Добавянето с плаваща запетая е хубавопросто. Поради стандарта IEEE 754 едно число с точност има огромен брой битове, така че е най-добре да преминете направо към примерите и е по-добре да вземете най-малкото представяне с плаваща запетая. Например две числа - X и Y.
Променлива | марка | Изложител | Мантиса |
C | 0 | 1001 | 110 |
и | 0 | 0111 | 000 |
Стъпките ще бъдат:
а) Числата трябва да бъдат представени в нормализирана форма. Скритата единица е изрично представена. X = 1,110 . 22и Y = 1.000 . 20.
б) Можете да продължите процеса на събиране само като изравните експонентите, като за това трябва да пренапишете стойността Y. Тя ще съответства на стойността на нормализираното число, въпреки че всъщност е денормализирана.
Изчислете разликата на степените от степен 2 - 0 = 2.Сега преместете мантисата, за да компенсирате тези промени, тоест добавете 2 към степента на втория член, като по този начин изместите запетаята на скритата единица с две точки наляво. Оказва се 0,0100 . 22. Това ще бъде еквивалент на предишната стойност на Y, тоест вече Y".
в) Сега трябва да добавите мантисите на числото X и коригираното Y.
1,110 + 0,01 = 10,0
Показателят все още е равен на представения експонент X, който е 2.
г) сумата, получена в предишния етап,измести единицата за нормализиране, което означава, че трябва да изместите степента и да повторите сумирането. 10.0 с два бита вляво от десетичната запетая, сега числото трябва да се нормализира, тоест да се премести десетичната запетая наляво с една точка и съответно да се увеличи степента с 1. Получава се 1000 . 23.
д) Време е да преобразувате числото с плаваща запетая в еднобайтова система.
Количество | марка | Изложител | Мантиса |
X+Y | 0 | 1010 | 000 |
заключение
Както можете да видите, добавянето на такива числа не е твърдетрудно, нищо че запетаята плава. Освен ако, разбира се, не броим намаляването на число с по-малък експонент до число с по-голямо (в горния пример това бяха Y до X), както и възстановяването на статуквото, т.е. издаване на обезщетение - преместване на запетаята на мантисата наляво. Когато събирането вече е извършено, е много възможно друго усложнение - пренормиране и съкращаване на битове, ако броят им не съвпада с формата на числото за неговото представяне.
Умножение
Двоичната бройна система предлага двеначина, по който числата с плаваща запетая се умножават. Тази задача може да бъде изпълнена чрез умножение, което започва с най-малките цифри и което започва с най-значимите цифри в умножителя. И двата случая съдържат редица операции, които последователно добавят частични продукти. Тези операции по събиране се контролират от битовете на умножителя. Това означава, че ако в една от цифрите на множителя има единица, тогава сумата от частичните произведения се увеличава с множителя със съответното изместване. И ако нулата се промъкне в категорията на множителя, тогава множителят не се добавя.
Ако се умножат само две числа, тогавацифрите на произведението в техния брой не могат да надвишават броя на цифрите, съдържащи се във факторите, повече от два пъти, а за големи числа това е много, много. Ако се умножат няколко числа, има риск продуктът да не се побере на екрана. Следователно броят на цифрите на всяка цифрова машина е доста краен и това ни принуждава да се ограничим до максимум два пъти броя на цифрите на суматорите. И ако броят на цифрите е ограничен, грешката неизбежно се въвежда в продукта. Ако обемът на изчисленията е голям, тогава грешките се наслагват и в резултат на това общата грешка се увеличава значително. Тук единственият изход е да закръглите резултатите от умножението, тогава грешката на продукта ще се окаже променяща знака. Когато се извърши операция за умножение, става възможно да се премине отвъд мрежата от цифри, но само от страната на по-ниските, тъй като има ограничение, наложено на числата, които са представени във формата с фиксирана запетая.
Някакво обяснение
По-добре е да започнете отначало.Най-често срещаният начин за представяне на число е като низ от цифри като цяло число със запетая в самия край. Този низ може да бъде с произволна дължина и запетаята е на правилното място за него, като разделя цялото число от неговата дробна част. Системата задължително задава определени условия относно местоположението на запетаята към формата за представяне на число с фиксирана точка. Експоненциалната нотация използва стандартното нормализирано представяне на числата. Това е q n {displaystyle aq^{n}} aqп. Ето {displaystyle a}и, а тази дантела се нарича мантиса. Точно за това беше казано, че 0 ⩽ a < q. Тогава всичко трябва да е ясно: n {/displaystyle n}п е цяло число, степен и q {/displaystyle q}за е също цяло число, което е в основата на даденотобройни системи (а в писмен вид най-често е 10). Мантисата ще остави запетая след първата цифра, която не е нула, но по-нататък по записа се предава информация за реалната стойност на числото.
Числото с плаваща запетая е много подобносе изписва в разбираема стандартна нотация за числата, само експонентът и мантисата се записват отделно. Последният също е в нормализиран формат - с фиксирана точка, която украсява първата значима цифра. Просто плаващата запетая се използва основно в компютъра, тоест в електронното представяне, където системата не е десетична, а двоична, където дори мантисата се денормализира чрез пренареждане на запетаята - сега е преди първата цифра, което означава преди, а не след него, където цялата част по принцип може да не е. Например, нашата родна десетична система ще предостави своите девет на двоичната система за временно използване. И този ще го запише с мантиса с плаваща запетая така: +1001000...0 и индикатора +0...0100 към него. От друга страна, десетичната система няма да може да извършва толкова сложни изчисления, каквито са възможни в двоичен вид, използвайки формата с плаваща запетая.
дълга аритметика
Електронните компютри иматвградени софтуерни пакети, при които количеството памет, разпределена за мантисата и експонентата, се задава програмно, ограничено само от количеството памет на компютъра. Ето как изглежда дългата аритметика, тоест прости операции с числа, които компютърът извършва. Все едно е - изваждане и събиране, деление и умножение, елементарни функции и повдигане до корен. Но само числата са напълно различни, капацитетът им може значително да надвиши дължината на машинна дума. Изпълнението на такива операции се извършва не в хардуера, а в софтуера, но основният хардуер се използва широко при работа с числа от много по-ниски порядки. Има и аритметика, при която дължината на числата е ограничена само от обема на паметта - произволна прецизна аритметика. И дългата аритметика се използва в много области.
един.За компилиране на код (процесори, микроконтролери с ниска битова дълбочина - в 10 бита и осем битови регистри, това очевидно не е достатъчно за обработка на информация от аналогово-цифров (аналогово-цифров преобразувател) и следователно не можете без дълга аритметика.
2. Също така дългата аритметика се използва за криптография, където е необходимо да се гарантира точността на резултата от степенуване или умножение до 10309. Използва се целочислена аритметика по модул m, голямо естествено число и не е задължително просто число.
3.Софтуерът за финансисти и математици също не може без дълга аритметика, защото това е единственият начин да проверите резултатите от изчисленията на хартия - с помощта на компютър, осигуряващ висока точност на числата. С плаваща запетая, те могат да включват всяка дължина на битовата дълбочина. Но инженерните изчисления и работата на учените рядко изискват намесата на софтуерни изчисления, защото е много трудно да се въвеждат входни данни, без да се правят грешки. Те обикновено са много по-големи от резултатите от закръгляването.
Борба срещу грешките
По време на операции с числа, в които плавазапетая, е много трудно да се оцени грешката на резултатите. Досега не е измислена математическа теория, която да удовлетворява всички, която да помогне за решаването на този проблем. Но грешките с цели числа са лесни за оценка. Възможността да се отървете от неточностите лежи на повърхността - просто използвайте само числа с фиксирана запетая. Например финансовите програми са изградени точно на този принцип. Там обаче е по-просто: необходимият брой цифри след десетичната запетая е известен предварително.
Други приложения може да не се ограничават до това,защото е невъзможно да се работи нито с много малки, нито с много големи числа. Ето защо при работа винаги се взема предвид, че са възможни неточности и следователно при показване на резултатите е необходимо да се закръглят. Освен това автоматичното закръгляване често е недостатъчно действие и следователно закръгляването е зададено нарочно. Операцията за сравнение е много опасна в това отношение. Тук дори да се оцени размерът на бъдещите грешки е изключително трудно.