给定两个数字 A 和 B,我想知道使用 Java 确定其中哪一个具有更多尾随零(以二进制表示)的最有效方法是什么。
我可以分别确定它们两个的尾随零的数量,但我不知道这是否是最好的方法,或者是否有一些二进制魔法可以做得更好。
备注 : 数字可能非常大,我需要使用 BigInteger
.
最佳答案
因为您正在使用 BigInteger
,您可以使用 BigInteger#getLowestSetBit
确定最右边一位右侧的零位数量。
System.out.println(BigInteger.valueOf(32).getLowestSetBit());
输出:
5
注意:此方法返回
-1
如果数字不包含一位(即 0
)。
关于java - 哪个数字在二进制表示中有更多的尾随零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62282425/