![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Nikole |
|
|||
|
Unregistered |
Как в С++ получить из битовых полей объединения беззнаковых
литер (unsigned char) значение переменной типа float, если извесен порядок следования полей (элементов искомого числа): мантисса M, знак мантиссы (0-положит, 1-отрицат), знак порядка, порядок N, а также известно количество бит, отводимое для хранения мантиссы (KBM) и для хранения порядка (KBP). Например, если KBM=2, KBP=3, то набор бит 11 0 1 110 (битовые поля разделены пробелами) должен дать число +3*10^(-6)=3/1000000. Нужна высокая скорость выполнения операций, поэтому функции POW и др. подобные использовать не желательно. |
|||
|
||||
| Дрон |
|
||||||||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 93 |
Фигасе...
Раза с 5-го понял что требуется. А вот что дано всё равно не понимаю
И что это такое? Как-то я такое и представить не могу. Битовые поля знаю. Объединения знаю. "Беззнаковые литеры" тоже знаю. Но чтобы всё вместе...
Оно фиксированно или задаётся переменными?
Кому нужна? Если это студенческая лабораточная работа, то это одно дело. Если же это реальная задача, то хоть скажите на каком процессоре это всё делается -- может проще будет асм использовать? Добавлено @ 00:39 В догонку.
Используются степени 10-ки? Со степенями 2-ки было бы гораздо проще. -------------------- Да. Именно так. |
||||||||
|
|||||||||
| Mayk |
|
||||||||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Если честно, то до конца не врубился что требуется(но в отличии от Дрона прочитал 3 раза).
Я понял задачу так - есть число очень дикого формата и нам его надо преобразовать в юзабельный флоат.
Не получится без pow. Если не отказаться от десятичной СС. Итак. Для начала восстановим экспоненту(ака порядок). Будем считать, что мы восстанавливаем float. Хотя лучше бы long double, ну да ладно. Не помню есть ли для него pow.
Вроде должно работать. Но не проверял.
Оно фиксированно хотя бы IEEE754. Никаким бубном в float нельзя будет запихнуть Float.MAX_VALUE+1.
Помимо того что было бы проще, при преобразовании из 2-ного формата Дикого Флоата в IEEE'овский флоат не терялась бы точность. Ведь 0,3 нельзя представить в двоичном формате.
Безумный Флоат. Более диким был лишь Безумный Синглтон Это сообщение отредактировал(а) Mayk - 12.9.2005, 07:58 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||||||||
|
|||||||||||
| bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 3 Всего: 317 |
мне очень понравился ваш анализ... интересно что обо всём этом думает сам Nicole
-------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |