Ily*_*man -14 java algorithm bit-manipulation
找出 2 的最大幂x,一个 64 位整数,或返回 -1。
零情况未定义,因为它是 2 的任何幂,因此您的方法可以返回任何数字。
我尝试BigInteger.getLowestSetBit()为此使用,它返回正确的答案,但远非最佳。
示例:输入 -> 输出
在Long类中,有一个方便的静态函数numberOfTrailingZeros,它几乎可以满足您的需求,除了当输入不能被 2 整除时它返回零(而不是 -1)。您可以用不同的方式处理这种情况。例如,扩展@0x476f72616e的答案
if ((num & 0x1) == 0)
return Long.numberOfTrailingZeros(num);
else
return -1;
Run Code Online (Sandbox Code Playgroud)