如何在 C 中获取整数的位长?

新手上路,请多包涵

关闭通知中的链接问题与此不同。请参阅下面 Daniel S. 的评论。

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

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

00000000 00000000 000 10001 11010111

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

原文由 qazerty23 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 536
1 个回答
unsigned bits, var = (x < 0) ? -x : x;
for(bits = 0; var != 0; ++bits) var >>= 1;

这应该为你做。

原文由 grimble 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题