|
Вопрос # 4 767/ вопрос открыт / |
|
Приветствую, уважаемые эксперты!
Можно ли зашифровать числа с плавающей точкой в 2 байта без потери точности, а лишь диапазона? Я всегда думал что нет, но начальник моего отдела со мной спорит что так можно.
 |
Вопрос задал: webkent (статус: 2-ой класс)
Вопрос отправлен: 27 ноября 2010, 15:24
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: Егор
Здравствуйте, webkent!
согласно этой странице, этой и многим другим, дял хранения мантиссы (т.е. значащих цифр без порядка) нужно:
для типа real (старого, паскалевского) - 5 байт.
для типа single - 3 байта
для типа double - 6 байт с копейками
для типа extended - 8 байт с копейками
т.е. имеем, что для хранения только мантиссы числа нужны минимум 3 байта.
двух точно не хватит.
 |
Ответ отправил: Егор (статус: 10-ый класс)
Время отправки: 27 ноября 2010, 18:26
|
Ответ #2. Отвечает эксперт: Вадим К
Здравствуйте, webkent!
Подойдем к вопросу с другой стороны. Попробуем оценить, сколько можно втиснуть в 2 байта. Припустим, что порядок мы не используем, а только мантису и она от 0 до 0.9999.... (бывает по другому, когда мантису хранят от 1.0000000 до 9.9999999....).
2 байта это 2 в 16 это 65536. Поэтому, минимальная разница, которую можно закодировать - это 1/65536 = 1.5 на 10-5. Это также будет минимальное число, которое можно закодировать в 2 байтах (при выбранной выше системе). Это 4 значащие цифры.
Если такая точность удовлетворяет, то ответ да, можно закодировать. если нет, то нет. Кто знает, что хочет начальник хранить? А это ключевое понятие.
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 27 ноября 2010, 20:37
|
Мини-форум вопроса
Всего сообщений: 6; последнее сообщение — 27 ноября 2010, 22:32; участников в обсуждении: 5.
|
webkent (статус: 2-ой класс), 27 ноября 2010, 15:26 [#1]:
Де ради проблемы, а ради интереса вопрос =)
|
|
Егор (статус: 10-ый класс), 27 ноября 2010, 15:41 [#2]:
что? какого диапазона?
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
Ерёмин А.А. (статус: *Администратор), 27 ноября 2010, 16:06 [#3]:
Смотря какая точность требуется.
|
|
Толяныч (статус: 4-ый класс), 27 ноября 2010, 17:56 [#4]:
Надо выбирать такую работу, где умный начальник. Если 2 байта, один байт на порядок, то остается 1 байт на мантиссу, с использованием скрытого разряда точность будет в районе 0,2% - хуже, чем у логарифмической линейки
|
|
min@y™ (статус: Доктор наук), 27 ноября 2010, 21:01 [#5]:
Скажи начальнику, что я сказал, что он мудак.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
webkent (статус: 2-ой класс), 27 ноября 2010, 22:32 [#6]:
ок я так я так и знал =)
Ибо читал вики по типам данных =))
Мин@y твои слова - истина! Он - мудак =)
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|