【问题标题】:Index of bits in 8-Bit variable8 位变量中的位索引
【发布时间】: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


【解决方案1】:

不确定它会加速你的问题,但你可以在每次迭代时移动你的 8 位变量(如果它是无符号的)并测试值是否为零以提前退出循环

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多