首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将一个数字映射到2的倍数的桶的有效方法

将一个数字映射到2的倍数的桶的有效方法
EN

Stack Overflow用户
提问于 2021-04-07 07:40:38
回答 1查看 47关注 0票数 0

我有一个存储桶,它的大小是以2为指数增长的。因此,存储桶是:(0-1], (1-2], (2-4], (4-8], (8-16]...

给定一个数字,我如何有效地判断它属于哪个存储桶索引?我能想到的一种选择是使用log2(N)并向上舍入到下一个整数。但是,是否可以推导出一个比在C++中使用log更快的简单数学公式呢?这将在延迟非常敏感的路径中调用,因此即使是微秒也很重要。

EN

回答 1

Stack Overflow用户

发布于 2021-04-07 09:01:22

只需使用std::count_lzero -它计算参数中第一个1位之前的前导(更重要的)0,这将有效地产生一个整数的log2函数。您可以期望使用平台支持的最有效的机器代码来实现它,在x86s的情况下,这是一条专用的指令-比您使用bit- hackery编写的任何代码都要快。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66977839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档