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: преобразование числа

Цитата:
последовательность Вибаначе

:lol:
Может попробовать просто взять какой-нибудь 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/