OSDev http://osdev.su/ |
|
преобразование числа http://osdev.su/viewtopic.php?f=18&t=1101 |
Страница 1 из 1 |
Автор: | scuter [ 25 июн 2015, 20:01 ] |
Заголовок сообщения: | преобразование числа |
недавно нашёл другой алгоритм перебора чисел, вот сам алгоритм есть первое число 0 00000000000000 второе число 1 единица ставиться в начале 00000000000001 третье число 2 единичка перемещается вперёд 00000000000010 и так дальше пока не переместится до конца это будет уже 14 в данном числе 10000000000000 когда единичка добралась до конца идёт новый ряд чисел но уже с двумя единичками это уже число 15 00000000000011 следующее число работает по алгоритму двигается самая последняя единичка вперёд если на пути она встречает перед собой другую единицу то она выбивает вперёд впереди стоящую единицу, а сома отбрасывается назад 00000000000101 - 16 00000000000110 - 17 00000000001001 - 18 00000000001010 - 19 у меня вопрос встречали ли вы такой алгоритм перебора чисел или нет, меня интересует преобразование обычного бинарного числа в такой вид чисел честно говоря мне нужен какой ни будь преобразователь числа который даёт максимально уникальное значение. |
Автор: | Nable [ 26 июн 2015, 00:49 ] |
Заголовок сообщения: | Re: преобразование числа |
scuter писал(а): честно говоря мне нужен какой ни будь преобразователь числа который даёт максимально уникальное значение. UUID, щтоле. Или стоит яснее определить что подразумевается под "уникальностью". |
Автор: | scuter [ 26 июн 2015, 01:02 ] |
Заголовок сообщения: | Re: преобразование числа |
мне нужно преобразовать число так что бы при изменении на единицу число менялось бы до неузнаваемости, при этом эти числа не должны повторяться. то есть первое число 00000000000001 следующее за ним 00011100100001 ну что ни будь вроде этого только преобразовывать нужно и в обратную сторону тоже. тот алгоритм похож на последовательность Вибаначе, только он другой и преобразование там другие. |
Автор: | Nable [ 26 июн 2015, 01:11 ] |
Заголовок сообщения: | Re: преобразование числа |
scuter писал(а): мне нужно преобразовать число так что бы при изменении на единицу число менялось бы до неузнаваемости, при этом эти числа не должны повторяться. то есть первое число 00000000000001 следующее за ним 00011100100001 ну что ни будь вроде этого только преобразовывать нужно и в обратную сторону тоже. Для этого используются функции симметричной криптографии. Типичные примеры - TEA (проще ~некуда), DES (старый, но ещё широко использующийся стандарт) и AES (современный индустриальный стандарт, все дела). |
Автор: | Bargest [ 26 июн 2015, 15:27 ] |
Заголовок сообщения: | Re: преобразование числа |
Цитата: последовательность Вибаначе Может попробовать просто взять какой-нибудь crc32 от этого числа? Он довольно резко меняется, как и любой хеш. EDIT: Не заметил про "обратную сторону". В обратную сторону потруднее, однако crc32 вроде уже вскрыт, а следовательно, должно быть можно и в обратную на 4-байтовых числах. |
Автор: | Zealint [ 26 июн 2015, 18:03 ] |
Заголовок сообщения: | Re: преобразование числа |
scuter писал(а): 00000000000101 - 16 00000000000110 - 17 00000000001001 - 18 00000000001010 - 19 у меня вопрос встречали ли вы такой алгоритм перебора чисел или нет, меня интересует преобразование обычного бинарного числа в такой вид чисел Конечно встречали. Это число сочетаний из "n" по "k". То есть все возможные варианты выбора из множества из n элементов k элементов. Сначала идёт перебор числа сочетаний из n по 1, потом из n по 2 и так далее, именно такие последовательности строк и будут получаться. Алгоритм где взять я сказать не могу, так как всегда всё пишу сам и чужим кодом не интересуюсь, но могу только сказать, что получение такой строки основано на расчёте биномиальных коэффициентов C_n^k. Задача эта стандартная, такая же классическая как получение номера лексикографической перестановки по самой перестановке чисел и наоборот - перестановки по её номеру. PS. Вот, было у меня 10 секунд, я нашёл это: http://e-maxx.ru/algo/generating_combinations Это именно оно. Только там выводятся на строки из нулей и единиц, а позиции, на которых стоят единицы. |
Автор: | BrezguyVsem [ 02 дек 2015, 13:58 ] |
Заголовок сообщения: | преобразование числа |
ну вот я теперь тоже почитал, понял что надо было гуглить на тему "дополнение нулями", а сразу не сообразил. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |