【发布时间】:2016-02-21 17:27:18
【问题描述】:
我有一个 8 位变量,我想获取每个 1 位的索引。
对于 00000011,索引只有 1 和 2。要获取索引,我会使用一个简单的 for 循环并检查给定位置的位是否为 1-。
我的方法总是需要 8 次迭代。这可以更有效地完成吗?
【问题讨论】:
-
您最多需要 8 个值作为结果 - 所以实际上没有什么比迭代每一位更有效的了。结果表是标准替代方案,但最终无论如何都需要迭代结果。您可能想澄清您正在寻找哪种类型的效率
-
嗯....可以说最多只有 4 个 1 位。我可以通过计算最低有效位的索引来加快计算速度,将该位更改为 0 并再次计算最低有效位,直到我得到所有索引?
-
自己测量一下看看。如果没有您尝试过的代码,甚至无法猜测任何内容。请参阅 ericlippert.com/2012/12/17/performance-rant 以获取有关提出性能问题的指导。
标签: bit-manipulation bit-fields