我正在用 Java 做一个 pokerHand 评估器,因为我正在使用一个用 C (http://www.suffecool.net/poker/evaluator.html)实现的评估器。我已经“翻译”了代码,它工作得很好而且很快。现在我想添加一些哈希表以使其更快,它看起来很简单,如下所述:http: //www.paulsenzee.com/2006/06/some-perfect-hash.html 但最终结果是代码不起作用,我意识到这是在以下函数中:
unsigned find_fast(unsigned u)
{
unsigned a, b, r;
u += 0xe91aaa35;
u ^= u >> 16;
u += u << 8;
u ^= u >> 4;
b = (u >> 8) & 0x1ff;
a = (u + (u << 2)) >> 19;
r = a ^ hash_adjust[b];
return r;
}
我认为在 C 中没有任何其他内容的“无符号”是一个整数,但在 java 中,此函数不会生成与 C 中相同的函数,并且 r 有时是负值,这没有意义。据我所知,Java 中没有像无符号运算符这样的东西,我认为这会导致将某些表示理解为负数的问题。有人可以帮我将该代码翻译成 Java 吗?非常感谢!