Найти значение га sh данного ключа на языке C - PullRequest
0 голосов
/ 10 апреля 2020

Может кто-нибудь помочь мне понять этот код алгоритма хеширования? Как мы получаем значение ha sh из этого кода? Почему он умножает h на 32 и добавляет к нему значение ASCII? Как это помогает получить значение ha sh из строки?

/**
* Find the hash value of a given key
* @param key
* @param size size of hash table
* @return hashed value of key
*/
int hash(char *key, int size) {
    unsigned long h = 0; // unsigned long, so that when it wraps it's still positive
    int n = strlen(key);

    for (int i = 0; i < n; i++) {
        // multiply by 32 (<<5) and add ascii value
        h = (h << 5) + (int)(key[i]);
    }

    return (int)h % size;
}
...