OSDev

для всех
Текущее время: 22 окт 2017, 03:43

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: преобразование числа
СообщениеДобавлено: 25 июн 2015, 20:01 

Зарегистрирован: 10 апр 2012, 23:19
Сообщения: 274
недавно нашёл другой алгоритм перебора чисел,
вот сам алгоритм
есть первое число 0
00000000000000
второе число 1 единица ставиться в начале
00000000000001
третье число 2 единичка перемещается вперёд
00000000000010
и так дальше пока не переместится до конца это будет уже 14 в данном числе
10000000000000
когда единичка добралась до конца идёт новый ряд чисел но уже с двумя единичками это уже число 15
00000000000011
следующее число работает по алгоритму
двигается самая последняя единичка вперёд если на пути она встречает перед собой другую единицу
то она выбивает вперёд впереди стоящую единицу, а сома отбрасывается назад
00000000000101 - 16
00000000000110 - 17
00000000001001 - 18
00000000001010 - 19
у меня вопрос встречали ли вы такой алгоритм перебора чисел или нет,
меня интересует преобразование обычного бинарного числа в такой вид чисел


честно говоря мне нужен какой ни будь преобразователь числа который даёт максимально уникальное значение.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование числа
СообщениеДобавлено: 26 июн 2015, 00:49 

Зарегистрирован: 26 мар 2012, 17:32
Сообщения: 208
scuter писал(а):
честно говоря мне нужен какой ни будь преобразователь числа который даёт максимально уникальное значение.

UUID, щтоле. Или стоит яснее определить что подразумевается под "уникальностью".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование числа
СообщениеДобавлено: 26 июн 2015, 01:02 

Зарегистрирован: 10 апр 2012, 23:19
Сообщения: 274
мне нужно преобразовать число так что бы при изменении на единицу число менялось бы до неузнаваемости,
при этом эти числа не должны повторяться.

то есть
первое число 00000000000001 следующее за ним 00011100100001
ну что ни будь вроде этого только преобразовывать нужно и в обратную сторону тоже.

тот алгоритм похож на последовательность Вибаначе, только он другой и преобразование там другие.


Последний раз редактировалось scuter 26 июн 2015, 01:16, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование числа
СообщениеДобавлено: 26 июн 2015, 01:11 

Зарегистрирован: 26 мар 2012, 17:32
Сообщения: 208
scuter писал(а):
мне нужно преобразовать число так что бы при изменении на единицу число менялось бы до неузнаваемости,
при этом эти числа не должны повторяться.

то есть
первое число 00000000000001 следующее за ним 00011100100001
ну что ни будь вроде этого только преобразовывать нужно и в обратную сторону тоже.

Для этого используются функции симметричной криптографии.
Типичные примеры - TEA (проще ~некуда), DES (старый, но ещё широко использующийся стандарт) и AES (современный индустриальный стандарт, все дела).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование числа
СообщениеДобавлено: 26 июн 2015, 15:27 

Зарегистрирован: 31 окт 2011, 18:20
Сообщения: 230
Цитата:
последовательность Вибаначе

:lol:
Может попробовать просто взять какой-нибудь crc32 от этого числа? Он довольно резко меняется, как и любой хеш.
EDIT: Не заметил про "обратную сторону". В обратную сторону потруднее, однако crc32 вроде уже вскрыт, а следовательно, должно быть можно и в обратную на 4-байтовых числах.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: преобразование числа
СообщениеДобавлено: 26 июн 2015, 18:03 
Аватара пользователя

Зарегистрирован: 17 фев 2013, 16:13
Сообщения: 163
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
Это именно оно. Только там выводятся на строки из нулей и единиц, а позиции, на которых стоят единицы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: преобразование числа
СообщениеДобавлено: 02 дек 2015, 13:58 

Зарегистрирован: 29 ноя 2015, 19:41
Сообщения: 1
ну вот я теперь тоже почитал, понял что надо было гуглить на тему "дополнение нулями", а сразу не сообразил.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB