这可能很基本,但是为了节省我一个小时左右的时间,谁能告诉我如何计算出在 Java 中表示给定正整数所需的位数?
例如我得到一个小数点 11,(1011)。我需要得到答案,4。
我想如果我能弄清楚如何将除最高有效位之外的所有位设置为 0,然后 >>> 它,我会得到我的答案。但是……我不能。
最佳答案
嗯,答案很简单。如果你有一个 int 值:
int log2(int value) {
return Integer.SIZE - Integer.numberOfLeadingZeros(value);
}
Long 也是如此……
[编辑] 如果剃须毫秒是这里的问题,则 Integer.numberOfLeadingZeros(int) 相当有效,但仍会执行 15 次操作...扩展合理的内存量(300 字节,静态)您可以将其减少到 1 到 8 次操作之间,具体取决于在你的整数范围内。
关于java - 找出以二进制表示正整数所需的位数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/680002/