unsigned int HashString( const char *string ) {
const char* p;
unsigned hash = 40503;
for ( p = string; *p != '\0'; ++p ) {
hash += *p;
hash += ( hash << 10 );
hash ^= ( hash >> 6 );
}
hash += ( hash << 3 );
hash ^= ( hash >> 11 );
hash += ( hash << 15 );
return hash;
}
彼らのコードをさまよっているだけです。ただし、このようなハッシュ関数はこれまで見たことがありません。
ビットごとの操作に関しては、私はあまり経験がありません。ビットシフトとマスキングがどのように機能するかは知っていますが、ビットが設定されているかどうかを確認するなどの基本的なシナリオでのみです。
これは正確に何をしますか?