Integer.numberOfLeadingZero详解
源码
public static int numberOfLeadingZeros(int i) { |
摘自JDK11.0.6源码
功能解释
该方法调用返回传入值二进制表示最高位(包含符号位)前0的个数,如果传入值为负数则返回0。
####1.传入值为负数
任意一个负数的二进制表示为一定为:
1xxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx |
最高位为1,前面有0个符号位,则返回0;
2.传入值为0
0的二进制表示为:
0000 0000 0000 0000 0000 0000 0000 0000 |
全为0,共32个,返回32;
3.传入值为正数
任取一个正数其二进制位数为:
01xx xxxx xxxx xxxx xxxx xxxx xxxx xxxx |
最高位为1,x为任意值。
//执行到这里,i >= 1,则最多有31个0,初始化计数器。 |
思想
该方法采用的二分法的方法进行判断,如果在高位就将低位右移处理掉。如果在低位在进一步判断是在低位的高半,还是低半位中。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.