获取位置而不是整数中最高一位的值

man*_*eak 5 java

如何获得整数中最高一位的位置而不是值?我知道我可以得到这样的价值:

// Prints 8; in 1101, the highest bit is the one denoting 8
int f = 13;
System.out.println("Highest: " + Integer.highestOneBit(f));
Run Code Online (Sandbox Code Playgroud)

不过,我想获得位置最高的一位-在这种情况下,这将是4(因为1000在二进制== 8,最高的一位是第四个)。

xs0*_*xs0 3

只需将其与 numberOfTrailingZeros 结合起来即可:

int pos = Integer.numberOfTrailingZeros(Integer.highestOneBit(f))
Run Code Online (Sandbox Code Playgroud)