我有两个不等的整数,只包含一个非零位。如何测试哪个整数有更重要的位?
示例:
test(0b1000_0000, 0b0100_0000); // Should return true
test(0b0010_0000_0000, 0b0100_0000_0000); // Should return false
test
的最有效实施是什么?
答案 0 :(得分:4)
提示:"清洁"这样做的方法是使用Integer.compareUnsigned
或Integer.numberOfLeadingZeros
。
(警告:" unsigned"方法仅在Java 8及更高版本中可用...)
效率最高的测试实施是什么?
问题的效率部分的答案将是特定于平台的。如果您真的关心,请对人们提供的各种替代方案进行基准测试。
答案 1 :(得分:0)
我认为这是最有效的实施方式。这也适用于负整数:
static boolean test(int int1, int int2) {
return ((int2 - 1) & int1) == 0;
}