位运算 —— 一个数二进制形式尾端为 0 的个数

所谓一个数二进制形式尾端为 0 的个数,比如对于 40 而言,其二进制形式为 101000,则其尾端为 0 的个数为 3,或者也可简单地返回 2^3 = 8;

Java 语言的 Integer 类其实本身就提供了该接口,

Integer.numberOfTrailingZeros(n);

如果现在没有类似 Integer 下的接口的话,还有一个较为 tricky 的方法可以获取尾端为 0 的个数:

int numOfTrailingZeros = n & -n;
  • 这里得到的不是直接的个数,而是 2k
  • 通过负数在计算机中通过补码表示,便可知 (n&-n) 的道理何在;
原文地址:https://www.cnblogs.com/mtcnn/p/9423312.html