Я пытаюсь проанализировать код для синтаксического анализа строки с максимальной длиной строки 4000 символов. Кодер использует следующую формулу для генерации ключаHash Table Генерация ключей
(fromid^(from_id<<18)^(toid<<2)
^(toid<<16)^(repetition<<4)^(repetition<<14)^
(tbranch_id<<6)^(tbranch_id<<12)^
(fbranch_id<<8))^(fbranch_id<<10)
Я не могу понять обоснование такой формулы?
Возможно ли оригинал? Вы просили расспросить его объяснение? – Juliet
@juliet, к сожалению, нет –
Если это java или аналогичный, то^является исключительным или, а << является оператором сдвига влево. (Немного отличается в F #!) Код, кажется, XORing поля вместе, но только после поворота их разных сумм. Я не знаю, почему вы указываете длину строки. Хеш-функция принимает потенциально большой вход (например, длинную строку) и создает короткий «отпечаток пальца» для этой строки. Хорошая хеш-функция будет гарантировать, что трудно найти два входа, которые производят один и тот же вывод. Это может быть трудно понять. Может быть, автор этого не понял? – John