如何获得整数中最高位的位置而不是值?我知道我可以得到这样的价值:
1000
但是,我想获得最高位的位置 - 在这种情况下,它将是4(自8
二进制== docker run
,最高的一位是第四位。)
答案 0 :(得分:2)
好吧,我们可以用数学方法做到这一点。
我们基本上希望从8获得4,从4获得3,从2获得2,从1获得等等。
这基本上是对数字进行log2并为其添加1。 log2
类中没有java.lang.Math
函数,但您可能知道:
logx(y) = log10(y) / log10(x)
所以我们可以这样做!
(Math.log10(Integer.highestOneBit(f)) / Math.log10(2)) + 1
答案 1 :(得分:0)
只需将它与numberOfTrailingZeros:
组合int pos = Integer.numberOfTrailingZeros(Integer.highestOneBit(f))
答案 2 :(得分:-2)
您可能希望使用Integer.toBinaryString将整数转换为字符串,然后返回其长度。
例如:
String binaryString = Integer.toBinaryString(13);
System.out.println(binaryString.length()); <== gives 4
因为不会有任何前导零。