簡體   English   中英

快速 hash function 從 2^n-1 位(意思是二進制 111....)到它的位總和或其他一些小范圍

[英]Fast hash function from 2^n-1 digit (means, binary 111....) into its sum of bits or other some small range

我正在尋找簡單的哈希函數 map 的數字是多少,由一個組成

  • 從右邊(意思是,1,3,7,15 = 二進制:1,11, 111,1111)以最好的方式將其數字求和(不建議只是位數 function,我不想依賴這里)
  • 以最好的方式,它的總和 (1,2,3,4...) 或其他相對較小的納什值,不與其他值重疊,僅僅是因為這些數字的數量很少 - 只有 32 位數字,包括0 表示整數,64 表示長整數。)非常感謝,親愛的代碼黑客!

一種選擇是使用與從 de Bruijn 序列派生的值相乘,用於計算尾隨零的數量 對於相關數字,這會給出 0 到 31 之間的唯一結果。

uint32_t hash(uint32_t x) {
    return (0x077CB531 * x) >> 27;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM