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

Побитовое копирование double - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Алгоритм с константной асимптотикой http://www.cyberforum.ru/cpp/thread83829.html
Нужно за О(1) давать ответ сколько элементов элементов последовательности установлено в 1 (первоначально - все обнулены), до определенного члена последовательности, также за О(1) нужно устанавливать новый член в 1, и иметь возможность за О(1) узнавать сколько элементов до n-ого установлено в 1. Как это реализовать? =-O Добавлено через 27 минут В принцыпе О(logN) - канает..
C++ Скины Как можно создавать скини на свои проги в Borland C++ Builder 6, как на Скриншоти Скриншот http://www.cyberforum.ru/cpp/thread83690.html
C++ Квадратная страна
http://acm.timus.ru/problem.aspx?space=1&num=1073&locale=ru В одном квадратном государстве жили квадратные люди. И всё остальное в этом государстве было тоже квадратное. Так, Квадратная Дума приняла Квадратный Закон о земле. Согласно этому закону, любой житель государства имел право приобрести землю. Земля продавалась, естественно, квадратными участками. Длина стороны каждого участка...
Препроцессорные директивы в C/C++ (#include, #define и прочее) C++
Статья переехала сюда
C++ Игра Пуговицы. http://www.cyberforum.ru/cpp/thread83658.html
http://acm.timus.ru/problem.aspx?space=1&num=1023&locale=ru Правила игры очень просты. Перед двумя играющими находится кучка из K пуговиц. Играющие по очереди берут пуговицы из кучки, причем за один ход каждый из них может взять от 1 до L пуговиц. Выигрывает тот из спортсменов, которому удастся взять последнюю пуговицу. Правила олимпийских соревнований будут лишь немного сложнее обычных. Тот...
C++ Ассемблерная вставка Товарищи!! кто знает, подскажите как сделать ассемблерную вставку в cи-проекте в среде Turbo C?? я пытался скормить ему asm...,но никак..ошибка( может быть надо тот кусок проги на асм отдельным файлом сделать и прикрепить..не знаю подскажите плз!! подробнее

Показать сообщение отдельно
insideone
Модератор
Автор FAQ
3638 / 916 / 49
Регистрация: 10.01.2010
Сообщений: 2,468
10.01.2010, 16:15  [ТС]     Побитовое копирование double
Цитата Сообщение от alex_x_x Посмотреть сообщение
не очень понимаю что за побитовые операции, разместить в определенном порядке, чем memset не подойдет, обращатся можно к отдельным байтам путем приведения к (char*)?
вообщем, что значит побитово считать?
Ну... задумываясь как можно было бы хранить различные данные я подумал о том что bool, char, и все int это простые числа над которыми можно производить побитовую операцию & 1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
template <class AnyType>
void WriteToDB(AnyType Var){
   unsigned char size = sizeof(Var)*8; получаем размер в БИТах
   unsigned char LastPos = GetCursor(); // последняя позиция в БД
   for (unsigned char CurPos = LastPos; CurPos < (LastPos + size); CurPos++)
   {
       this->DB[CurPos] = Var & 1; // отрываем последний БИТ от Var и записываем его в БД
       Var = Var >> 1; // делаем предпоследний БИТ последним БИТом =)
   }
   SetLink(LastPos, size); // устанавливаем метку где записались данные
}
// Результат работы WriteToDB((unsigned short int)3)
// исходные данные 3 = 0000 0000 0000 0011
// this->DB = { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
// PS. БД bool массив[/B]
а вот double не разрешает над собой творить такого, хотя это глупо все же состоит из битов так или иначе

Добавлено через 1 час 27 минут
Цитата Сообщение от Nick Alte Посмотреть сообщение
Что же касается битовых операций, то можно воспользоваться union:
C++
1
2
3
4
5
6
union BitDouble {
    double dbl;
//    __int64 bits64;                      // Ненужные члены можно просто закомментировать
    unsigned long bits32[2];
    unsigned char bits8[8];
};
union хорош конечно... но тут не сделаешь автоматического выбора куда ему писать. вот если бы можно было
C++
1
BitDouble = 3;
... хотя то что сейчас там тоже все за счет кучи перегрузок делается. Хм... ну ещё минус то что union занимает максимум пространства из возможного
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru