Плаваща запетая

Реалните числа в двоична бройна система трябва да се съхраняват по специален начин в компютъра. Компютрите представят числата като цели двоични числа (цели числа, които са степен на две), така че няма пряк начин за представяне на нецелочислени числа като десетични дроби, тъй като няма радикс. Един от начините, по които компютрите заобикалят този проблем, е представянето на числата с плаваща запетая, като "плаваща" се отнася до начина, по който радиксната точка може да се премести по-високо или по-ниско, когато се умножи по експонента (степен).


 

Преглед

В математиката и науката много големите и много малките числа често се опростяват и умножават по степен на десет, за да бъдат по-лесно разбрани. Например много по-лесно е да се прочете 1,2 трилиона като {\displaystyle 1.2\times 10^{12}} , отколкото като 1 200 000 000 000 000. Това може да се използва и при отрицателни степени на десет, за да се получат малки числа, т.е. можете да представите 0,000001 като {\displaystyle 1\times 10^{-6}}. Този процес се нарича научен запис.

Тъй като компютрите са ограничени до цели и двоични числа, това означава, че те не могат лесно да представят дробни десетични числа. За да представят дробни числа, компютрите използват три набора двоични числа, за да направят представяне на научна нотация. Това са: значещият бит, който определя дали числото е положително (0) или отрицателно (1); значещият знак, който е целочислена (цяла) версия на числото; и експонентата, която е мощността, с която се умножава основата.

Significand

Значението се намира, като се вземе числото и се премести радиксната точка, докато няма дробна част, което го превръща в цяло число. В десетична бройна система това е превръщането на 1,45 в 145 чрез преместване на точката надясно с 2 стъпки, а в двоична бройна система това би било превръщането на 1101.0111 (13,4375) в 1101 0111 (215) чрез преместване на точката надясно с 4 стъпки; и в двата случая тези числа не са свързани помежду си извън използването на едни и същи цифри в подобна последователност.

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

Експонент

Експонентата е броят на цифрите, покрай които се е преместила точката на радикса: ако тя се премести наляво, експонентата е отрицателна, а ако се премести надясно, е положителна. Както и по-горе, превръщането на 1,45 в 145 изисква да се умножи по 100, така че експонентата е 2, тъй като {\displaystyle 100=10^{2}}. По същия начин превръщането на 1101.0111 (13.4375) в 1101 0111 (215) изисква да преместите радиксната точка четири колони надясно, така че експонентата е 4; това може да се провери в десетична бройна система като {\displaystyle 215\div 13.4375=16(2^{4})} .

Тъй като процесът е обърнат в повечето случаи на научна нотация, тъй като включва превръщането на фракция в цяло число, а не превръщането на голямо цяло число в дроб, експонентите обикновено са отрицателни, за да се премести десетичната запетая наляво; в десетична бройна система това би означавало да превърнете вашето цяло число 145 обратно в дробно число 1,45, като го умножите по {\displaystyle 10^{-2}}. Вместо да се използва подписан най-ляв бит, експонентата е наклонена, което дава на 32-битовите експоненти на плаващите числа диапазон от {\displaystyle 2^{-126}} до {\displaystyle 2^{127}}. Изходната стойност на наклонения експонент може да се намери, като към нея се добави 127:

{\displaystyle b^{5}=132(5+127)=10000100}

{\displaystyle b^{-5}=122(-5+127)=01111010}

{\displaystyle b^{0}=127(0+127)=01111111}



 

Пример

Превръщане на десетична в двуцифрена система

Да предположим например, че искаме да представим десетичното число 37,40625 в неговата двоична противоположност: бицимално число (или двоична десетична дроб). Първо, трябва да вземем нашето десетично число, което е в степени на 10, и да го преобразуваме в двоично, което е в степени на 2. Един от начините да направим това е да извадим най-голямата възможна степен на две, докато стигнем до нула:

{\displaystyle 37.40625-\mathbf {32} (2^{5})=5.40625}

{\displaystyle 5.40625-\mathbf {4} (2^{2})=1.40625}

{\displaystyle 1.40625-\mathbf {1} (2^{0})=0.40625}

{\displaystyle 0.40625-\mathbf {0.25} (2^{-2})=0.15625}

{\displaystyle 0.15625-\mathbf {0.125} (2^{-3})=0.03125}

{\displaystyle 0.03125-\mathbf {0.03125} (2^{-5})=0}

Като използваме степента на две по-горе, можем да представим нашето десетично число {\displaystyle 37.40625} по следния начин:

Захранване:

{\displaystyle 2^{5}}

{\displaystyle 2^{4}}

{\displaystyle 2^{3}}

{\displaystyle 2^{2}}

{\displaystyle 2^{1}}

{\displaystyle 2^{0}}

-

{\displaystyle 2^{-1}}

{\displaystyle 2^{-2}}

{\displaystyle 2^{-3}}

{\displaystyle 2^{-4}}

{\displaystyle 2^{-5}}

Стойност:

1

0

0

1

0

1

-

0

1

1

0

1

Превръщане на Bicimal в Float

Потвърдихме, че нашето десетично число {\displaystyle 37.40625} се представя в двоичен вид като {\displaystyle 100101.01101} . Проблемът при компютрите обаче е, че те представят числата като цели степени на две с помощта на битове, което усложнява дробните и отрицателните числа. В съответствие с IEEE-754 начинът, по който това обикновено се прави с компютър, е да се създаде 32-битово число с плаваща запетая, което се състои от три части: знак, 1 бит, за да се определи дали нашето число е положително или отрицателно; експонента, 8 бита, за да се представи нашата експонента и към които добавяме 127, за да избегнем подписани байтове; и нашата значимост, която е нашето двоично число без двоична запетая, разпределено в 23 бита. Тъй като трябва да преместим бицималната точка на 5 места, за да превърнем {\displaystyle 100100.01101} в сигнификант {\displaystyle 10010001101} , нашият експонент е {\displaystyle 132(5+127)} . Като използваме 32-битов float, можем да представим 37,40625 по следния начин:

Тип:

±

Експонент

Significand

Стойност:

0

1

0

0

0

0

1

0

0

0

0

1

0

1

0

1

1

0

1

0

0

0

0

0

0

0

0

0

0

0

0

0

Значение:

+

{\displaystyle 2^{7}+2^{2}=132}

{\displaystyle 2^{20}+2^{18}+2^{16}+2^{15}+2^{13}=1,417,216}



 

Свързани страници

 

Въпроси и отговори

В: Какво представляват реалните числа?


О: Реални числа са всички числа, които могат да бъдат изразени като десетична цифра, включително дроби и ирационални числа.

В: Как компютрите съхраняват двоични числа?


О: Компютрите съхраняват двоичните числа като цели двоични числа, които са цели числа, представляващи степен на две.

В: Има ли директен начин компютрите да представят нецелочислени числа като десетични?


О: Не, няма директен начин за представяне на нецелочислени числа като десетични, защото няма радикс.

В: Каква е целта на представянето на числата с плаваща запетая?


О: Представянето на числата с плаваща запетая позволява на компютрите да заобиколят проблема с липсата на радиксна точка, като позволяват на радиксната точка да се премества по-високо или по-ниско, когато се умножава с експонента (степен).

В: Какво означава "плаваща" в представянето с плаваща запетая?


О: Терминът "плаващ" се отнася до начина, по който радиксната точка може да се движи по-високо или по-ниско, когато се умножава по експонента (степен).

В: Как се изчислява експонента (степен)?


О: Експонентата (мощността) се изчислява чрез умножаване на базово число по себе си определен брой пъти. Например 2^3 = 8, защото 2 x 2 x 2 = 8.

AlegsaOnline.com - 2020 / 2023 - License CC3