如果你有二进制数10110,如何让它返回5?例如一个数字,告诉我们使用了多少位?以下是一些类似的例子:
- 101应该返回3
- 000000011应该返回2
- 11100应该返回5
- 101010101应该返回9
public static int getBitLength(int value)
{
if (value == 0)
{
return 0;
}
int l = 1;
if (value >>> 16 > 0) { value >>= 16; l += 16; }
if (value >>> 8 > 0) { value >>= 8; l += 8; }
if (value >>> 4 > 0) { value >>= 4; l += 4; }
if (value >>> 2 > 0) { value >>= 2; l += 2; }
if (value >>> 1 > 0) { value >>= 1; l += 1; }
return l;
}
log2(value)+1
相同。https://dev59.com/LXA75IYBdhLWcg3wboYz - weston