一部の C++ コードを Java コードに移植しています。
Java には 64 ビットを保持できる unsigned データ型はありません。
long
Javaのデータ型(もちろん署名されています)に格納されているハッシュコードがあります。
long vp = hashcode / 38; // hashcode is of type 'long'
ここで 38 は 2 より大きいため、結果の数値は Java の他の算術演算に安全に使用できます。
問題は、「hashcode」の符号付きビットが 1 に設定されている場合はどうなるかです。変数 vp で負の値を取得したくありません。データ型が符号なしであるかのように、正の値が必要でした。
PS: パフォーマンスの問題のため、この目的で Biginteger を使用したくありません。