Название: int и float ->BIN быстрый перевод Отправлено: Bjedug от Февраль 14, 2007, 18:03 Доброго вам времени суток!!!
Есть такой вопрос!!! Как перевести быстро числа типа float и int в двоичный код без деления. З.Ы. Все таки они както хронятся в компьютере Название: int и float ->BIN быстрый перевод Отправлено: alex12 от Февраль 14, 2007, 22:56 Вопрос: а что нужно на выходе: char[32]?
Если да, то например: Код:
Вроде не ошибся... Еще более быстрый вариант -- табличный способ. Сделать таблицу для 1 байта, и int делать в 4 итерации. Код:
Здесь правда memcpy наверное все время сожрет. Так что еще не понятно какой способ быстрее. Таблицу набивать, естественно, не руками, а специальной утилиткой, использующей первый метод. По поводу float, думаю, тут нужно что-то типа: Код:
Название: int и float ->BIN быстрый перевод Отправлено: Вудруф от Февраль 15, 2007, 08:39 float в двоичном виде выводить смысла не имеет. Там часть отдаётся мантиссе, часть - порядку. Таким образом вывод "единичек" не информативен.
Для int можно воспользоваться std::bitset. Название: int и float ->BIN быстрый перевод Отправлено: Bjedug от Февраль 15, 2007, 09:47 вобщем задача такая:
Есть числа [0.0, 1.0] типа float. Нужно создать класс BIN - двоичное число и перегрузить операции сложения и умножения, просто каждый раз переводить Bin->Dec или Dec->Bin много времени займет Название: int и float ->BIN быстрый перевод Отправлено: alex12 от Февраль 15, 2007, 11:35 Тогда я совсем не понял задачу: ЗАЧЕМ класс BIN если можно просто так складывать и умножать? Это какие-то нестандартные операции сложения/умножения?
Название: int и float ->BIN быстрый перевод Отправлено: Bjedug от Февраль 15, 2007, 12:06 Вот задача ... Есть нейронная сеть которая обучается генетическим алгоритмом. Веса нейронной сети кодируются типом float (вещественное кодирование). Хочу переписать класс "Нейронная сеть"
как класс-шаблон, т.е. хочу использовать float - использую float, хочу двоичную кодироку использую каласс Bin. Пучему перегружаю сложение и умножение, так в нейросетях другого и ненужно. Почему двоичное кодирование - хочу поюзать генетический алгоритм с двоичным кодированием... если подсобите с кодом Грея (быстрый перевод) то буду только рад Название: int и float ->BIN быстрый перевод Отправлено: alex12 от Февраль 16, 2007, 00:39 В нейронных сетях я совсем не мастер...
Про код Грея хороршо знает Wikipedia: Алгоритм преобразования из двоичной системы счисления в код Грея, записанный на языке C: Код:
обратный алгоритм (преобразование из кода Грея в двоичную систему счисления): Код:
Прямой алгоритм очень быстрый, а обратный можно сделать таблицей. Думаю даже 128K для 16 бит вполне пойдет. |