Страница: 1 |
Страница: 1 |
Вопрос: Числа с плавающей запятой
Добавлено: 23.01.09 01:09
Автор вопроса: ZoomerSD | ICQ: 148640473
Подскажите, такая задачка:
Как вычислить максимально возможное нормализованное значение числа с плавающей точкой которое можно поместить в 32 битное слово. Конечный результат должен быть 3,4*10^38. Но мне надо сам процесс его получения.
Ответы
Всего ответов: 3
Номер ответа: 1
Автор ответа:
Father
Вопросов: 0
Ответов: 159
Профиль | | #1
Добавлено: 23.01.09 03:38
Ну, есть стандарт IEEE754 для чисел с плав. точкой.
Все биты подробно расписаны.
Но получить из них число в десятичном представлении, не пользуясь готовыми функциями (типа printf) врагу не пожелаю)
Номер ответа: 2
Автор ответа:
Father
Вопросов: 0
Ответов: 159
Профиль | | #2
Добавлено: 23.01.09 07:27
P/S
Кстати, если выставить все биты в единицу
кроме старшего 31-го (знак числа) и 23-го (знак экспоненты),
то максимально возможное = 3.4028235E38
Номер ответа: 3
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #3
Добавлено: 23.01.09 16:55
Пусть бит под знак 1, под мантиссу a, под экспоненту b, a + b + 1 = 32. Тогда экспонента может принимать значения до 2^b-1, нормализованная мантисса состоит из a единиц и равна 1.1...1, где после точки a единиц. Таким образом, максимально точно представимое число равно
f := (a, b) -> 2^(2^b-1) + sum(2^((2^b-1)-i), i=1..a);
В частности для float
> f(23, 7);
340282346638528859811704183484516925440