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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Розв'язування задач обробки масивів http://www.cyberforum.ru/cpp/thread1340012.html
9. У прямокутній матриці кожен нульовий елемент замінити середнім арифметичним значенням ненульових елементів того рядка, в якому розташований даний нульовий елемент. Якщо в рядку декілька нульових елементів, то вони повинні бути замінені одним і тим же значенням
C++ Розв'язування задач обробки масивів» Скласти програму для підрахунку середнього арифметичного додатніх елементів прямокутної таблиці В, що складається з MN цілих чисел. Сформувати матрицю за допомогою генератора випадкових чисел і організувати її вивід на екран. http://www.cyberforum.ru/cpp/thread1340010.html
9. В одномірному масиві В, що складається з N цілих елементів, з проміжку [-20;10], обчислити суму елементів C++
.В одномірному масиві В, що складається з N цілих елементів, з проміжку , обчислити суму елементів масиву, розташованих між першим та другим додатніми елементами.
C++ У одновимірному масиві В тому, що складається з N цілих елементів, обчислити: a) кількість елементів, рівних з
У одновимірному масиві В тому, що складається з N цілих елементів, обчислити: a) кількість елементів, рівних за значенням першому елементу; b) добуток елементів з проміжку .
C++ Алгоритмы для сжатия изображений, видео и звука http://www.cyberforum.ru/cpp/thread1339887.html
Здравствуйте,форумчане! Не могли бы вы посоветовать алгоритмы сжатия для изображений,звука,видео? И еще один вопрос,возможно, он кому-то покажется глупым:алгоритм Хаффмана сжимает все виды данных? И если да,то можно ссылку на информацию как он это делает?
C++ Задание внутри Ramus Educational Мне нужно создать концептуальную модель торгового предприятия. Скажите пожалуйста, что я должна описать? Как сделать эту модель? подробнее

Показать сообщение отдельно
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.12.2014, 08:26  [ТС]     Как определить порядок бит в double?
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Ну или интом, способ кодирования которого уже известен. А то что инт может выглядеть по разному связано с порядком байт в слове, и соответственно порядок аналогичный как для слова, так и для двойного слова и т.д.
Чёрта с два. Существует ещё смешанный порядок, то есть такой, при котором порядок байт в слове не совпадает с порядком слов в двойном слове, или двойных слов в четверном слове. В общем случае смешанного порядка порядок байт может даже не совпадать в разных словах одного двойного слова, или байты одного слова значения могут быть раскиданы по разным словам кода. В спецификации заявлена поддержка вообще всех возможных порядков байтов. Для слов это два порядка:
Номер байтаадрес
0&x
1((char*)&x)+1
и
Номер байтаадрес
0((char*)&x)+1
1&x
. Для двойных слов я уже насчитал 24 порядка байт. Но это уже сделано. Любой порядок байтов в четверном слове однозначно кодируется таким четверным словом, что если на читающей машине порядок байт в четверном слове отличается, то оно будет искажено при чтении, чему оно должно быть равно известно из спецификации формата и любое другое четверное слово в файле подлежит такой перестановке байтов, при выполнении которой к четверному слову, кодирующему порядок байт в четверных словах будет устранено его искажение, вызванное не совпадением порядка байт в четверных словах. Так как порядок байт во всех четверных словах на одной машине одинаков, то такая перестановка восстанавливает значение любого искажённого не совпадением порядка четверного слова во всём файле.

Добавлено через 3 минуты
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
В любом случае double будет соответствоват 8-байтному (ну или сколько там в определенном таргете байт на double) инту. т.к. double кодируется уже внутри двойного/четверного слова. Соответственно перекодируешь слова/двойные/четверные/восьмерные или какие они там есть, а потом перекодируешь внутри них double.
Напоследок поучительная история. Когда я работал над тестовым проектом на GPU, у меня была последовательная и параллельная версия одной программы. Сравнив время выполнения, я был очень обрадован, так как получил ускорение в 300 раз. Но позже оказалось, что вычисления на GPU «разваливались» и обращались в NaN, а работа с ними в GPU была быстрее, чем с обычными числами. Интересно было другое — одна и та же программа на эмуляторе GPU (на CPU) выдавала корректный результат, а на самом GPU – нет. Позже оказалось, что проблема была в том, что этот GPU не поддерживал полностью стандарт IEEE754 и прямой подход не сработал.
http://habrahabr.ru/post/112953/.

Добавлено через 4 минуты
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Нет, ты не понял. Формат представления double основан двух интах(размером не целое количество байт) - один мантисса, другой показатель. Собери double вручную (ну как эмулятор FPU собирает, только с заданным количеством бит)и сравни совпало ли с тем как собирается штатными средствами. Варианты перебери в цикле. Когда совпало - вариант представления известен.
А если совпало случайно? И потом 456 тысячных уже не приводятся к двоичной дроби и ни какой сдвиг не поможет. То есть мантисса на самом деле не равна 123456 с каким бы то нибыло сдвигом.
 
Текущее время: 10:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru