Форум программистов, компьютерный форум CyberForum.ru

Как определить порядок бит в double? - C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
24.12.2014, 15:45     Как определить порядок бит в double? #1
Как определить порядок бит в double?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2014, 15:45     Как определить порядок бит в double?
Посмотрите здесь:

Какая-нибудь реализация функции void Fun (double in, double *out) C++
Порядок байт в слове и бит в байте C++
C++ Порядок и мантисса параметра типа double
Как работает функция GetAsyncKeyState, как проверить её результат(именно наименьший бит) C++ WinAPI
Скольки бит выделяется в float и double под целую часть? C++
Перегрузка операций (Создать класс вещественных чисел (double); определить оператор +, как функцию-элемент и – как дружественную функцию) C++
Почему перестает работать программа при замене double на long double? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fulcrum_013
 Аватар для Fulcrum_013
509 / 613 / 68
Регистрация: 14.12.2014
Сообщений: 4,969
Завершенные тесты: 2
25.12.2014, 08:43     Как определить порядок бит в double? #21
Цитата Сообщение от taras atavin Посмотреть сообщение
Для слов это два порядка
Кстати слово это не два байта. Это размер данных с которыми оперирует проц за одну операцию. т.е для 4040 слово 0,5 байт, для 8080 - 1 байт, для 8086-2 байта, для 80386-4 байта для x64 - 8 байт. Хотя конечно со времен 8086 прижилось 2 байта.
Цитата Сообщение от taras atavin Посмотреть сообщение
И потом 456 тысячных уже не приводятся к двоичной дроби и ни какой сдвиг не поможет
естественно не приводятся, приводятся с точностью обеспечиваемой разрядной сеткой. Для того чтоб случайно не совпадали, то проверь несколько констант таким способом. Тебе насколько понимаю надо определить формат в одном таргете и в другом. Перепаковка из известного в известный формат - уже не проблема.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.12.2014, 08:45  [ТС]     Как определить порядок бит в double? #22
Правильная мантисса 63209 dec (1111011011101001 bin) и её ни какими доичными сдвигами её из 123 dec (1111011 bin) и 456 dec (111001000) не получишь.
Fulcrum_013
 Аватар для Fulcrum_013
509 / 613 / 68
Регистрация: 14.12.2014
Сообщений: 4,969
Завершенные тесты: 2
25.12.2014, 08:46     Как определить порядок бит в double? #23
ps: так и подозревал что ты дрова для GPU делаешь
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.12.2014, 08:47  [ТС]     Как определить порядок бит в double? #24
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Для того чтоб случайно не совпадали, то проверь несколько констант таким способом.
И для гарантии все представимые? Вы себе представляете, сколько это тысячелетий?

Добавлено через 22 секунды
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
ps: так и подозревал что ты дрова для GPU делаешь
Вообще то нет.

Добавлено через 57 секунд
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А записать в той приладе которая генерит файл.
Думал одно, написал другое. Как сосчитать?
Fulcrum_013
 Аватар для Fulcrum_013
509 / 613 / 68
Регистрация: 14.12.2014
Сообщений: 4,969
Завершенные тесты: 2
25.12.2014, 08:58     Как определить порядок бит в double? #25
Цитата Сообщение от taras atavin Посмотреть сообщение
Правильная мантисса 63209 dec (1111011011101001 bin) и её ни какими доичными сдвигами её из 123 dec (1111011 bin) и 456 dec (111001000) не получишь.
Для того чтобы в формат IEEE 754 (или подобный, не выровнянный на байты)запаковать уже саму мантиссу подвигать прийдется. так же как и вычисленный dec.

Добавлено через 1 минуту
Цитата Сообщение от taras atavin Посмотреть сообщение
Как сосчитать?
Сосчитать где? В представлении в штатном double таргета на котором прилада запущена, или в файле неизвестного формата?
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.12.2014, 09:06  [ТС]     Как определить порядок бит в double? #26
В памяти конечно. И кто сказал, что формат файла не известен? Это treepict.

Добавлено через 1 минуту
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Для того чтобы в формат IEEE 754 (или подобный, не выровнянный на байты)запаковать уже саму мантиссу подвигать прийдется. так же как и вычисленный dec.
Как предлагаете без дабла его вычислить? Сдвигами здесь ничего не получится, так как правильная дробная часть не 456 тысячных, а 233 пятсотдвенадцатых.

Добавлено через 4 минуты
Ну или 467 1024-х, тогда мантисса удлиняется ещё на одну единицу (11110110111010011 bin, 126419 dec).
Fulcrum_013
 Аватар для Fulcrum_013
509 / 613 / 68
Регистрация: 14.12.2014
Сообщений: 4,969
Завершенные тесты: 2
25.12.2014, 09:07     Как определить порядок бит в double? #27
Ну в идеале продефайнить для каждого таргета. ну а если нет то именно так - конструировать double ручками во всех возможных вариантах, и сравнивать со сконструированным штатным способом. Хотя тоже бред получается. По большому счету в каком формате компилер положит константу в бинарник так она там и будет. Вообще компилер под таргет должен сразу представление знать.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.12.2014, 09:15  [ТС]     Как определить порядок бит в double? #28
Да он то знает, но на конкретной машине, где запущен. Знать представление на других платформах он не способен.

Добавлено через 3 минуты
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
конструировать double ручками во всех возможных вариантах, и сравнивать со сконструированным штатным способом.
Эиси, сконструирую 0,75, совпадёт для одного явного и одного не явного бита мантиссы, на самом деле их 52 явных и один не явный.
Fulcrum_013
 Аватар для Fulcrum_013
509 / 613 / 68
Регистрация: 14.12.2014
Сообщений: 4,969
Завершенные тесты: 2
25.12.2014, 09:27     Как определить порядок бит в double? #29
Цитата Сообщение от taras atavin Посмотреть сообщение
Да он то знает, но на конкретной машине, где запущен. Знать представление на других платформах он не способен.
Следовательно, на той на которой генерит файл писать в файл формат используемых чисел в чаре.
Если такое не возможно, то надо хотя бы знать значение (в формате платформы которая читает файл) лежащее по определенному адресу в файле. потом из значения которое есть в файле всеми способами попытаться сконструировать пока не совпадет.

Добавлено через 3 минуты
Цитата Сообщение от taras atavin Посмотреть сообщение
Эиси, сконструирую 0,75, совпадёт для одного явного и одного не явного бита мантиссы, на самом деле их 52 явных и один не явный.
Должны совпасть не только мантиссы, но и порядки и размещение порядка и мантиссы в формате.

Добавлено через 3 минуты
А порядок следования байт в формате уже определен при определении интов той же размерности.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.12.2014, 11:19  [ТС]     Как определить порядок бит в double? #30
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Следовательно, на той на которой генерит файл писать в файл формат используемых чисел в чаре.
Как?
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Если такое не возможно, то надо хотя бы знать значение (в формате платформы которая читает файл) лежащее по определенному адресу в файле. потом из значения которое есть в файле всеми способами попытаться сконструировать пока не совпадет.
Опять таки не понятно. С целыми то просто: записать любую константу, у которой все байты уникальны в пределах самой константы, если прочиталась не правильно, то по прочитанному значению и по известному правильному значению однозначно определяется порядок байт на платформе-источнике и все необходимые перестановки, которые превратят это число в правильное. Этим перестановкам подвергать все остальные числа в файле. А с плавающей запятой как? Ни на фиксированную запятую, ни на обыкновенные дроби переходить не охота.

Добавлено через 4 минуты
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Должны совпасть не только мантиссы, но и порядки и размещение порядка и мантиссы в формате.
Добавлено через 3 минуты
А порядок следования байт в формате уже определен при определении интов той же размерности.
Ладно, попробую по-другому. Есть ли гарантия, что CPU любой двоичной домашней машины всегда будет поддерживать IEEE 754? Не конкретно intel-совместимый, а вообще любой, а то чёрт его знает, какие ещё платформы могут получить хотябы ограниченное распространение в указанном сегменте.
Fulcrum_013
 Аватар для Fulcrum_013
509 / 613 / 68
Регистрация: 14.12.2014
Сообщений: 4,969
Завершенные тесты: 2
25.12.2014, 11:25     Как определить порядок бит в double? #31
Цитата Сообщение от taras atavin Посмотреть сообщение
Есть ли гарантия, что CPU любой двоичной домашней машины всегда будет поддерживать IEEE 754
Вообщето IEEE - это институт по стандартизации электрических устройств. Вобщем то американский аналог ГОСТа.
Цитата Сообщение от taras atavin Посмотреть сообщение
А с плавающей запятой как? Ни на фиксированную запятую, ни на обыкновенные дроби переходить не охота.
Да так же само только в два хода. первым ходом переставляешь ее как инт той же длины. вторым ходом определяешь размер мантисы и порядка.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.12.2014, 11:35  [ТС]     Как определить порядок бит в double? #32
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Вообщето IEEE - это институт по стандартизации электрических устройств. Вобщем то американский аналог ГОСТа.
То то даже опции оптимизации на него плюют. ГОСТ же был строг, нарушать его было нельзя.
Стандарт заменяет IEEE 754-1985. В новый стандарт включены двоичные форматы из предыдущего стандарта и три новых формата. В соответствии с действующим стандартом, реализация должна поддерживать по крайней мере один из основных форматов, как и формат арифметики и формат обмена.
Можно как то узнать, что это за формат обмена?
Fulcrum_013
 Аватар для Fulcrum_013
509 / 613 / 68
Регистрация: 14.12.2014
Сообщений: 4,969
Завершенные тесты: 2
25.12.2014, 12:57     Как определить порядок бит в double? #33
Цитата Сообщение от taras atavin Посмотреть сообщение
Можно как то узнать, что это за формат обмена?
Секретный алгоритм получения информации по стандарту IEEE 754-1985
Код
Browser.Navigate("www.google.com");
User.SelectControl("SearchString");
User.Type("IEEE-754-85");
User.PressKey("Enter");
Сверхсекретный патч секретного алгоритма:
Строку 3 заменить на
Код
User.Type("IEEE-754-2008");
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.12.2014, 12:58  [ТС]     Как определить порядок бит в double? #34
Именно так я и нашёл сам вопрос.
Fulcrum_013
 Аватар для Fulcrum_013
509 / 613 / 68
Регистрация: 14.12.2014
Сообщений: 4,969
Завершенные тесты: 2
26.12.2014, 23:24     Как определить порядок бит в double? #35
Цитата Сообщение от taras atavin Посмотреть сообщение
Именно так я и нашёл сам вопрос.
Сверхсекретный SP1 секретного алгоритма:
Код
Browser.Navigate("www.google.com");
User.SelectControl("SearchString");
User.Type("IEEE-754 standart 2008");
User.PressKey("Enter");
User.FindInResults("IEEE Std 754™-2008 - Florida State University");
User.FindInResults("Floating Point and IEEE 754 Compliance for NVIDIA GPUs");
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
27.12.2014, 15:39  [ТС]     Как определить порядок бит в double? #36
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Floating Point and IEEE 754 Compliance for NVIDIA GPUs
А нафига мне энвидия?

Добавлено через 18 секунд
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
User.FindInResults("IEEE Std 754™-2008 - Florida State University");
То же самое.
Fulcrum_013
 Аватар для Fulcrum_013
509 / 613 / 68
Регистрация: 14.12.2014
Сообщений: 4,969
Завершенные тесты: 2
27.12.2014, 21:54     Как определить порядок бит в double? #37
Суперсекретная оптимизация сверхсекретного алгоритма
http://www.softelectro.ru/ieee754.html
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
30.12.2014, 10:23  [ТС]     Как определить порядок бит в double? #38
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Кстати слово это не два байта. Это размер данных с которыми оперирует проц за одну операцию.
По такой логике слово равно 8-ми байтам, но 8 байт всё таки называются четверным словом. Есть тип WORD, это на любом потомке i80286 два байта, а DWORD равен четырём байтам.

Добавлено через 9 минут
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Суперсекретная оптимизация сверхсекретного алгоритма
http://www.softelectro.ru/ieee754.html
И вики:
Число с плавающей запятой (или число с плавающей точкой) — форма представления вещественных (действительных) чисел, в которой число хранится в форме мантиссы и показателя степени. При этом число с плавающей запятой имеет фиксированную относительную точность и изменяющуюся абсолютную. Используемое наиболее часто представление утверждено в стандарте IEEE 754. Реализация математических операций с числами с плавающей запятой в вычислительных системах может быть как аппаратная, так и программная.
. Наиболее часто не значит всегда. А об определении формата опять ни слова. Мало того:
Стандарт заменяет IEEE 754-1985. В новый стандарт включены двоичные форматы из предыдущего стандарта и три новых формата. В соответствии с действующим стандартом, реализация должна поддерживать по крайней мере один из основных форматов, как и формат арифметики и формат обмена.
. То есть даже под IEEE 754 понимается 4 разных формата.
Fulcrum_013
 Аватар для Fulcrum_013
509 / 613 / 68
Регистрация: 14.12.2014
Сообщений: 4,969
Завершенные тесты: 2
30.12.2014, 18:34     Как определить порядок бит в double? #39
Цитата Сообщение от taras atavin Посмотреть сообщение
То есть даже под IEEE 754 понимается 4 разных формата.
В зависимости от длины в байтах.

Добавлено через 2 минуты
т.е half, single, double и Long double.
Да кстати, для SSE-регистров еще применялся формат упакованных чисел с плавающей запятой, но сейчас они поддерживают и обычные IEEE форматы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.12.2014, 18:34     Как определить порядок бит в double?
Еще ссылки по теме:

Почему мы пишем double x (double y)? а не через запятую double x,y C++
Определить порядок хранения байт 16-ричного числа C++
C++ Подсчитать количество единичных бит в числе типа double
Бит 8, младший и старший бит (по книге) C++
Исправить ошибки "cannot convert 'double (*)(double)' to 'double'" и "too many arguments to function" C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
30.12.2014, 18:34  [ТС]     Как определить порядок бит в double? #40
Эйси. А не стандартные? В формат заранее закладывается абсолютно дикая экзотика от густо перемешанных байт четверного слова до иных ичностей целого.
Yandex
Объявления
30.12.2014, 18:34     Как определить порядок бит в double?
Ответ Создать тему
Опции темы

Текущее время: 02:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru