GCC(4.6+)的实施是什么__builtin_clz?它是否符合英特尔的某些CPU指令x86_64 (AVX)?
在 C++ 中,找出存储给定 int 需要多少位的最快方法是什么?
我可以尝试将数字除以 2 多次,但除法很慢。有什么快捷的方法吗?
编辑:
非常感谢各位的回答。当我说int我的帖子时,我的意思是任何 4 字节的整数。例如,如果我存储 30665,我希望得到 15 位的结果。
假设有一个变量int x.它的大小是4个字节,即32位.
然后我为这个var赋值,x = 4567(二进制10001 11010111); 所以现在,在内存中它应该是这样的:
00000000 00000000 000 10001 11010111
有没有办法得到重要的位长度.在我的例子中,比特长度将是13(我用粗体标记它们).如果我使用sizeof(x)它返回4个字节,其大小为int.如何只获得代表数字的位大小(之后没有不必要的零)?