java.util.Hashtable#get(K key)
의 일부인 hash function code은 다음을 수행합니다. int index = (hash & 0x7FFFFFFF) % tab.length;
. 이 바이너리 '및'연산은 부호 비트를 재설정하는 것만을 의미합니까? 따라서 부정적인 테이블 액세스는 피하십시오.자바 Hashtable 해시 조회의 비트 단위 AND?
업데이트 : '와'는 0x7FFFFFFF이고 0xEFFFFFFF가 아닌 것은 나를 혼란스럽게합니다. 왜 기호는 단일 비트가 아닌 전체 바이트를 필요로합니까?
인덱스는 음수이어야하며 가장 높은 비트를 지우면 값이 양수임을 확신 할 수 있습니다. 그리고'%'다음에 양수가됩니다. – MrSmith42
당신의 업데이트는 저를 괴롭힙니다. 0xE와 0x7 모두 단일 비트가 설정되지 않았습니다. 유일한 차이점은 어떤 비트가 설정되지 않았는지입니다. E는 1110이므로 4 번째 최상위 비트는 설정 해제되며 7은 0111입니다. 따라서 최상위 비트는 설정되지 않습니다. 부호 비트는 최상위 비트입니다. – delnan