All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.psjava.algo.math.ThomasWangHash Maven / Gradle / Ivy

There is a newer version: 0.1.19
Show newest version
package org.psjava.algo.math;

public class ThomasWangHash {

	// from http://www.concentric.net/~ttwang/tech/inthash.htm

	public static int hash32bit(int key) {
		key = ~key + (key << 15); // key = (key << 15) - key - 1;
		key = key ^ (key >>> 12);
		key = key + (key << 2);
		key = key ^ (key >>> 4);
		key = key * 2057; // key = (key + (key << 3)) + (key << 11);
		key = key ^ (key >>> 16);
		return key;
	}

	public static int hash64bit(long key) {
		key = (~key) + (key << 18); // key = (key << 18) - key - 1;
		key = key ^ (key >>> 31);
		key = key * 21; // key = (key + (key << 2)) + (key << 4);
		key = key ^ (key >>> 11);
		key = key + (key << 6);
		key = key ^ (key >>> 22);
		return (int) key;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy