所谓一个数二进制形式尾端为 0 的个数,比如对于 40 而言,其二进制形式为 101000,则其尾端为 0 的个数为 3,或者也可简单地返回 2^3 = 8;
Java 语言的 Integer 类其实本身就提供了该接口,
Integer.numberOfTrailingZeros(n);
如果现在没有类似 Integer 下的接口的话,还有一个较为 tricky 的方法可以获取尾端为 0 的个数:
int numOfTrailingZeros = n & -n;
- 这里得到的不是直接的个数,而是 2k
- 通过负数在计算机中通过补码表示,便可知 (n&-n) 的道理何在;