This question already has answers here:
Find out number of bits needed to represent a positive integer in binary?

(14个回答)


2年前关闭。




如何获得整数中最高一位的位置而不是值?我知道我可以得到这样的价值:
// Prints 8; in 1101, the highest bit is the one denoting 8
int f = 13;
System.out.println("Highest: " + Integer.highestOneBit(f));

但是,我想获得最高的一位的位置-在这种情况下,它应该是4(因为二进制中的1000 == 8,所以最高的一位是第四位)。

最佳答案

只需将其与numberOfTrailingZeros结合即可:

int pos = Integer.numberOfTrailingZeros(Integer.highestOneBit(f))

10-08 01:13