2010-01-21 11 views
0

최대 문자열 길이가 4000자인 문자열을 구문 분석하는 코드를 분석하려고합니다. 코더가 다음과 같은 공식을 사용하여 키를 생성합니다.해시 테이블 키 생성

(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 유감스럽게도 no –

+0

이것이 java 또는 이와 비슷한 경우 ^는 배타적 인 또는이며, <<는 왼쪽 시프트 연산자입니다. (F #에서는 다소 차이가납니다!) 코드는 필드를 함께 XOR하는 것으로 보이지만, 다른 양만큼 회전시킨 후에 만 ​​나타납니다. 왜 내가 문자열 길이를 언급하는지 모르겠습니다. 해시 함수는 잠재적으로 큰 입력 (예 : 긴 문자열)을 가져와 해당 문자열에 대한 짧은 "지문"을 생성합니다. 좋은 해시 함수는 동일한 출력을 생성하는 두 입력을 찾기가 어렵다는 것을 확인합니다. 이해하는 것이 어려운 개념 일 수 있습니다. 아마도 저자는 그것을 잘 이해하지 못했을 것입니다. – John

답변