Персонал для моего класса предоставил эту хэш-функцию, которая принимает 0 и повышает ее до значения символа ascii, и в своем ответе он говорит, что ответ (для ascii 'B') - 01000010 или 66. На мой взгляд, мыумножение 0 на 0, 66 раз.Почему это равняется 66?
Вот код:
int hash_it(char* needs_hashing)
{
unsigned int hash = 0;
for (int i=0, n=strlen(needs_hashing); i<n; i++)
hash = (hash << 2) ^ needs_hashing[i];
return hash % HASHTABLE_SIZE;
}
Затем она объясняет это:
i = 0
hash = 0x00
needs_hashing[0] = 'B'
hash << 2 = 0000
hash = 0x00 ^ 0x42 (0000 ^ 0100 0010) // <- 0 raised to 66
hash = 0x42 (0100 0010) //<-equals 66
Любая помощь была бы великолепной, ячувствую себя действительно глупо.