들어가기 전에
보수의 성질을 이용하여 값을 양수로 변환하는 방법에 대해 살펴보도록 하겠습니다.
학습 목표
해시의 값을 양수로 변환할 수 있습니다.
핵심 단어
- 보수
- 해시
강의 듣기
들어가기 전에
보수의 성질을 이용하여 값을 양수로 변환하는 방법에 대해 살펴보도록 하겠습니다.
학습 목표
해시의 값을 양수로 변환할 수 있습니다.
핵심 단어
강의 듣기
양수로 변환
다음과 같이 연산하면 값을 해시(테이블)에 포함되는 양수로 나타낼 수 있습니다. (Java에서는 음수를 표현하기 위해 2의 보수를 활용합니다. 첫 숫자가 0이면 양수고 1이면 음수입니다.)
이 방법을 사용하여 data를 배열의 어느 위치에 넣을 것인지 결정합니다.
// data의 index 결정
int hashval = data.hashCode(s);
hashval = hashval & ox7FFFFFFF;
hashval = hashval % tableSize;
생각해보기
1) 값을 양수로 변환해야 하는 이유는 무엇인가요?
comment
값이 음수인 경우 마지막 모듈러연산의 결과값이 음수가 될 수 있고 이는 테이블의 인덱스가 음수가 될 수 있음을 의미한다.
하지만 인덱스는 음수일 수 없으므로 양수로 변환해주어야 한다.
생각해보기
배열의 인덱스는 음수가 될 수 없기 때문입니다.
스크립트가 0x7FFFFFFF에서 7이 빠져있네요!