static int getHash(int key, int seed) {
int c1 = 0xcc9e2d51;
int c2 = 0x1b873593;
int r1 = 15;
int r2 = 13;
int m = 5;
int n = 0xe6546b64;
int hash = seed;
int k = key;
k *= c1;
k = (k << r1) | (k>>>(32-r1));
k *= c2;
hash ^= k;
hash = ((hash << r2) | (hash >>> (32 - r2))) * m + n;
hash ^= 4;
hash ^= (hash >>> 16);
hash *= 0x85ebca6b;
hash ^= (hash >>> 13);
hash *= 0xc2b2ae35;
hash ^= (hash >>> 16);
return hash;
}
最終更新:2014年07月27日 19:23