그래서 해시 오전 정의한 이러한 유형/기능 :에이다 : 정수 오버플로
subtype string2 is String(1..2);
function cString2 is new Ada.Unchecked_Conversion(string2, long_integer);
function cChar is new Ada.Unchecked_Conversion(character, long_integer);
이 해시 함수를 사용해야합니다
HA = (((cString2(s1) + cString2(s2)) * 256) + cChar(char)) mod 128
(함수가 목적에 나쁜,하지만 이를 구현해야 함) 문제는 오버 플로우에 대해 두 개의 long 정수를 더한 256을 곱하거나 더하려고 시도 할 때 발생합니다. 어떻게 든 문자열을 POSITIVE 정수 값으로 취급해야하고 함수 오버플로가 발생하지 않아야합니다. 감사!!!
보통 사람이 만드는 해시 테이블 크기 소수 : 단어 미만의 절반 최악의 경우 두 개의 서로 다른 해시 값에 대한 스물 충돌 각각에 대해 고유 한 해시를 갖는 결과를 생성합니다. – user3344003
숙제 당신은 차선책 인 해시 함수가 붙어 있기 때문에 가정합니다. –