![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| leniviy |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 552 Регистрация: 8.2.2003 Где: Спб Репутация: 1 Всего: 5 |
Подскажите непрерывный диапазон целых чисел, которые можно хранить в переменной типа double без потери точности.
Это точно не DBL_MIN..DBL_MAX
|
||||
|
|||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
-/+ 4 503 599 627 370 496
__int64 может больше. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| tzirechnoy |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 2 Всего: 16 |
Да, примерно +-2^[число бит мантиссы-1], кстати. На будущее.
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
А почему -1 ? В числах с плавающей точкой знак хранится отдельно.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Мантисса позволяет хранить целые от 0 до 2^n-1, но за счёт экспоненты double может хранить и 2^n. За счёт того, что знак хранится отдельно, диапазон симметричен -2^n ... 2^n Это сообщение отредактировал(а) math64 - 27.9.2012, 08:32 |
|||
|
||||
| tzirechnoy |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 2 Всего: 16 |
Ну, по факту -- если там один бит, то только 0, +1, -1. 2 ужэ от 3 не отличить. То есть +-2^0. PS Да, я в биты включал и неявный, если он есть. В IEEE 754 double -- есть (малые числа не рассматриваем за нерелевантностью), т.е. 53 бита мантиссы записываются в 52 бита в памяти. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 12 Всего: 459 |
Все равно не верно. Тогда можно сказать лишь, что (2^n) - 1, а не 2^(n-1) Возьмем число в основном коде состоящее из 3х бит 111 (бинарная система) = 7 (десятичная) 2^(3-1) = 4 (2^3) - 1 = 7 -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
8 тоже записывается в виде 100(2)*10(2)^1 А 9 уже нет, при выолнении 8+1 можно получить 8 или 10 (в зависимости от правил округления) Поэтому при 3 битах мантиссы (1 из них может быть скрытым) диапазон будет -8...8, т. е. -2^n...2^n без всяких -1 |
|||
|
||||
| tzirechnoy |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 2 Всего: 16 |
(хар)0xy == (хар-1)xy0. Так что выкидываем как дубли 001, 010, 011 (000 -- симметричен и не дублируется). То есть остаётся +-4. Доказывать -- лень (оставляю это для самостоятельной тренировки Добавлено через 1 минуту и 36 секунд А можэт, и не выкидываем. Чёрт, думать надо. Но по-моему выкидываем. Вечером подумаю. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |