Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2010, 16:58   #1
explored
 
Регистрация: 22.10.2010
Сообщений: 4
Восклицание Перемешивание позиций битов в числе

Господа,
вопрос следующий: требуется случайным образом перемешать все биты в числе. Существуют алгоритмы, если длина слова - степень 2. В моем случае это может быть не только не степень 2, но и нечетное количество бит. Добавлять нулями до нужной длины нельзя, так как эти нули окажуться в конечном числе. Какие будут идеи? На картинке, например, алгоритм для числа из 32 бит.
Изображения
Тип файла: jpg 1.JPG (30.3 Кб, 93 просмотров)
explored вне форума Ответить с цитированием
Старый 22.10.2010, 20:05   #2
Assemblerru
Форумчанин
 
Регистрация: 28.01.2010
Сообщений: 224
По умолчанию

У меня вопрос
1 Тебе нужно переместить биты в лево или право.
2 каким образом нужно переместить (побитно но на случайное число бит т.е. при перемешении сохранить последовательность но со смешением или полностью с распределением случайным образом)

да в общем попробуй както описать что конкретно вы хотите (правильно заданный вопрос это уже половина ответа)
всему свое время как зиме и весне
и каждому солнцу свой неба кусок
Assemblerru вне форума Ответить с цитированием
Старый 23.10.2010, 18:27   #3
explored
 
Регистрация: 22.10.2010
Сообщений: 4
По умолчанию

Ок, уточняю. Предположим, есть число, состоящее из 5 бит:
10110
Мне нужно СЛУЧАЙНЫМ образом перемешать (не просто сдвинуть) все биты.
Т.е. в итоге получается тоже 5 бит и тоже 2 нуля и 3 единицы, но на случайных позициях. Например, 11001. Только в моем случае количество бит гораздо большее. Так вот, если бы количество бит было степенью 2, то существует множество алгоритмов перемешивания бит. А у меня не всегда будет так. Т.е. нужно как-то перемешать все биты для нечетной длины слова. Чтобы просто все биты заняли случайные позиции
Чисто типа BigInteger
explored вне форума Ответить с цитированием
Старый 25.10.2010, 20:15   #4
explored
 
Регистрация: 22.10.2010
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Assemblerru Посмотреть сообщение
У меня вопрос
1 Тебе нужно переместить биты в лево или право.
2 каким образом нужно переместить (побитно но на случайное число бит т.е. при перемешении сохранить последовательность но со смешением или полностью с распределением случайным образом)

да в общем попробуй както описать что конкретно вы хотите (правильно заданный вопрос это уже половина ответа)
Ладно, уже реализовал представление числа в виде массива бит. Перемешиваю массив, потом обратно в integer. Но может кто догадается как со сдвигами можно реализовать?
explored вне форума Ответить с цитированием
Старый 27.10.2010, 17:23   #5
artush1984
Форумчанин
 
Аватар для artush1984
 
Регистрация: 27.04.2009
Сообщений: 184
По умолчанию

Xoroshay zadacha
Hа C я могy пpосто делать ошибки, на C++ я могy их наследовать!
artush1984 вне форума Ответить с цитированием
Старый 27.10.2010, 18:18   #6
sashonk
Форумчанин
 
Регистрация: 26.10.2009
Сообщений: 170
По умолчанию

а алгоритмы из стандартной библиотеки не подойдут?
sashonk вне форума Ответить с цитированием
Старый 27.10.2010, 23:14   #7
explored
 
Регистрация: 22.10.2010
Сообщений: 4
По умолчанию

Цитата:
Сообщение от sashonk Посмотреть сообщение
а алгоритмы из стандартной библиотеки не подойдут?
Не думаю, что такие имеются... Единственные инструменты это побитовые сдвиги влево/вправо, логические операторы (AND, OR, XOR)
как в примере на картинке... но это для 32 битового числа
explored вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисление новых позиций. velis83 Microsoft Office Excel 9 14.10.2010 12:16
Перемешивание строк gamer123 Общие вопросы Delphi 17 25.08.2010 20:10
Вычисление позиций IraPr Microsoft Office Access 4 23.08.2010 20:15
Перемешивание строк Черничный БД в Delphi 3 15.07.2008 14:11
Перемешивание с внутренними цепочками igrok85_85 Помощь студентам 1 02.05.2008 18:20