Отговори на тема  [ 6 мнения ] 
въпрос за плаваща запетая 
Автор Съобщение
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Чет Окт 20, 2005 5:02 pm
Мнения: 108
Мнение въпрос за плаваща запетая
Искам да попитам относно смятането на числа с плаваща запетая, че не ми стана ясно нещо.
Чета IEEE 754-1985 и почвам да проигравам примера в "Single-precision 32-bit" секцията - числото е:
0 _ 01111100 _ 0100000000000000000000 (знаков бит _ 8-бит експонента _ 23-битова мантиса)

Според формулата
V = (-1)^s * 2^(exponent - 127) * (1+fraction)

би трябвало да се получи
1 * 2^(-3) * 1,25 = 0,15625

Е, тъп съм и се чудя в какъв формат е представена мантисата - прав код, обратен, допълнителен... Със сигурност са прави, но все пак, как от 1.01 (двоично) се получава 1.25 (десетично)? Това ме обърква.


Сря Авг 11, 2010 12:46 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение 
Мантисата е най-обикновено двоично число. Избутана е наляво докато удари
с единица в експонента _и още веднъж_, т.е. най-старшият бит на мантисата
е винаги по подразбиране 1 и е извън 23-те бита, които се пишат.
Изключение правят т.нар. "tiny" числа, при които експонентът е 0, тогава
мантисата просто е двоично число без избутване наникъде и без подразбираща
се невписана най-старша 1-ца.

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Сря Авг 11, 2010 1:18 pm
Профил WWW
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Юли 21, 2010 11:36 am
Мнения: 2
Местоположение: Варна
Мнение Re: въпрос за плаваща запетая
uglyduck написа:
Искам да попитам относно смятането на числа с плаваща запетая, че не ми стана ясно нещо.
Чета IEEE 754-1985 и почвам да проигравам примера в "Single-precision 32-bit" секцията - числото е:
0 _ 01111100 _ 0100000000000000000000 (знаков бит _ 8-бит експонента _ 23-битова мантиса)

Според формулата
V = (-1)^s * 2^(exponent - 127) * (1+fraction)

би трябвало да се получи
1 * 2^(-3) * 1,25 = 0,15625

Е, тъп съм и се чудя в какъв формат е представена мантисата - прав код, обратен, допълнителен... Със сигурност са прави, но все пак, как от 1.01 (двоично) се получава 1.25 (десетично)? Това ме обърква.


за fraction имаш:
0100000000000000000000 (това е дробна чист - подобно на 10-тичните но с основа 2 :) )
което е 2^(-2)=0.25

от (1+fraction):
1 + 0.25 = 1.25


Сря Авг 11, 2010 1:31 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Чет Окт 20, 2005 5:02 pm
Мнения: 108
Мнение 
Загрях :)
Бях свикнал да чета двоичните числа от дясно на ляво - понеже младшия бит е обикновено в дясно. Примерно 0011 bin = 3 dec...
При floating pointa малко извратено ми се вижда, още повече, че и във въпросната документация са посочили младшия бит от дясно. Както и да е, вероятно си има причини; ще свикна.

Значи просто мантисата (fraction според IEEE) се смята така (подразбира се, че най-старшият бит на мантисата винаги е 1) - примерно:
01100.....0 става равно на
0 * 1/2^1 + 1 * 1/2^2 + 1 * 1/2^4 = 1/4 + 1/8 = 0.25 + 0.125 = 0.375
и като добавим подразбиращата се единица става 1.375


Сря Авг 11, 2010 4:13 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение 
За домашно представи числото 3.375 :)

_________________
Warriors of the Night, ASSEMBLER!!!


Сря Авг 11, 2010 4:17 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Чет Окт 20, 2005 5:02 pm
Мнения: 108
Мнение 
Много смешно :)

3.375 => S = 0
E = 10000000 bin = 128 dec
F = 101100...0 bin = 0.6875 => fraction = 1.6875

=> V = (-1)^S * 2^(E-127) * (1+F) = 1 * 2^1 * (1+0.6875) = 3.375


Сря Авг 11, 2010 6:17 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 6 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта


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

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни