java - 找出以二进制表示正整数所需的位数?

标签 java bit-manipulation bit

这可能很基本,但是为了节省我一个小时左右的时间,谁能告诉我如何计算出在 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/

相关文章:

java - 有没有一个 Java 库可以完成 php date_modify 的功能?

java - java中多级继承中构造函数调用的顺序

c - 从 2 个位图中获取 on 位索引的组合

c++ - 一些随机的 C 问题(ascii 魔法和位运算符)

c - 位切片 : finding minimum value

sql - 在 pl/sql 中做 bitor 的好方法是什么?

java - 如何在 Java 中同步未同步的集合

java - 在 SimpleDateFormat 模式字符串中使用字母字符

c - 在 c 中检索有符号 long long 的最高有效 32 位

c - 关于在 C 中仅使用运算符检查整数为零或负数的问题?