c++ - 如何在 C++ 中获取整数的位长度?

标签 c++ integer bit

<分区>

这个问题不是 Count the number of set bits in a 32-bit integer 的重复。请参阅下面 Daniel S. 的评论。

--

假设有一个变量 int x;。它的大小是 4 个字节,即 32 位。

然后我给这个变量赋值,x = 4567(二进制 10001 11010111),所以在内存中它看起来像这样:

00000000 00000000 00010001 11010111

有没有办法得到重要的位的长度。在我的示例中,位的长度为 13(我将它们标记为粗体)。 如果我使用 sizeof(x),它返回 4,即 4 个字节,这是整个 int 的大小。如何获得表示没有前导 0 的整数所需的最少位数?

最佳答案

unsigned bits, var = (x < 0) ? -x : x;
for(bits = 0; var != 0; ++bits) var >>= 1;

这应该为您完成。

关于c++ - 如何在 C++ 中获取整数的位长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29388711/

相关文章:

c++ - 将智能指针放入 STL 容器中

c++ - 如何调整作为结构或类成员的 vector 的大小?

c++ - icc版本13.0.0标志进行编译

c++ - 这是一个好的设计选择吗?

python - 用于在磁盘上有效存储整数对集的数据结构选项?

java - 无法在java中使用循环分配数组值

c - 在 C 中设置最低有效位

c - C 中的位操作,设置最低有效位

mysql - 在 mysql 中创建序列号的自定义格式示例

javascript - 如何在javascript中将整数数组转换为字符串而不丢失方括号