Integer类中的numberOfLeadingZeros
转自
https://www.jianshu.com/p/2c1be41f6e59
该方法的作用是返回无符号整型i的最高非零位前面的0的个数,包括符号位在内;
二分法
public static int numberOfLeadingZeros(int i) { if (i <= 0) { return i == 0 ? 32 : 0; } else { int n = 31; if (i >= 65536) { n -= 16; i >>>= 16; } if (i >= 256) { n -= 8; i >>>= 8; } if (i >= 16) { n -= 4; i >>>= 4; } if (i >= 4) { n -= 2; i >>>= 2; } return n - (i >>> 1); } }