0x9e3779b9
представляет собой целую часть дробной части Золотого сечения 0,61803398875… (sqrt(5)-1)/2, умноженную на 2^32.
Следовательно, если φ = (sqrt(5)+1)/2 = 1,61803398875 — это Золотое сечение, хэш-функция вычисляет дробную часть n * φ, которая имеет хорошие свойства рассеивания. Чтобы убедиться, просто создайте диаграмму рассеивания(n, n*c-FLOOR(n*c))
c
0x9e3779b1
0x9e3779b9
0x9e3779b97f4a7c15
0x9e3779b97f4a7c55
ZeroTierOne-1.14.2\node\Hashtable.hpphttps://softwareengineering.stackexchange.com/questions/402542/where-do-magic-hashing-constants-like-0x9e3779b9-and-0x9e3779b1-come-from
http://troydhanson.github.com/uthash/
erlang-fast_tls
https://github.com/processone/fast_tls/tree/master/c_src
The Paul Hsieh hash functionhttps://www.azillionmonkeys.com/qed/hash.html
https://www.azillionmonkeys.com/qed/hash.c
Комментариев нет:
Отправить комментарий