2010-01-21 5 views
0

Я пытаюсь проанализировать код для синтаксического анализа строки с максимальной длиной строки 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) 

Я не могу понять обоснование такой формулы?

+0

Возможно ли оригинал? Вы просили расспросить его объяснение? – Juliet

+0

@juliet, к сожалению, нет –

+0

Если это java или аналогичный, то^является исключительным или, а << является оператором сдвига влево. (Немного отличается в F #!) Код, кажется, XORing поля вместе, но только после поворота их разных сумм. Я не знаю, почему вы указываете длину строки. Хеш-функция принимает потенциально большой вход (например, длинную строку) и создает короткий «отпечаток пальца» для этой строки. Хорошая хеш-функция будет гарантировать, что трудно найти два входа, которые производят один и тот же вывод. Это может быть трудно понять. Может быть, автор этого не понял? – John

ответ

0

У меня появилась возможность заглянуть в это, чтобы четко понять, на чем основан ключ, и какова идея выбора ключа над другим, и как хэширование выполняется на практике, пожалуйста, посетите мои статьи полной длины здесь.

http://techieme.in/techieme/hashing-in-detail-part-one/