哪个一位整数有更重要的位?

时间:2017-01-29 05:43:53

标签: java bit

我有两个不等的整数,只包含一个非零位。如何测试哪个整数有更重要的位?

示例:

test(0b1000_0000, 0b0100_0000); // Should return true
test(0b0010_0000_0000, 0b0100_0000_0000); // Should return false

test的最有效实施是什么?

2 个答案:

答案 0 :(得分:4)

提示:"清洁"这样做的方法是使用Integer.compareUnsignedInteger.numberOfLeadingZeros

(警告:" unsigned"方法仅在Java 8及更高版本中可用...)

  

效率最高的测试实施是什么?

问题的效率部分的答案将是特定于平台的。如果您真的关心,请对人们提供的各种替代方案进行基准测试。

答案 1 :(得分:0)

我认为这是最有效的实施方式。这也适用于负整数:

static boolean test(int int1, int int2) {
    return ((int2 - 1) & int1) == 0;
}