【发布时间】:2015-01-01 12:37:42
【问题描述】:
我正在寻找一个需要增加计数器的问题。此计数器的工作方式类似于大小为 3 的事件内存持有者。这意味着您可以存储在过去三个时间段内发生的事件。
例如:
- 在时隙 0 发生了一个事件:set mem_holder = 001
- 在时间段 1,另一个事件:将 mem_holder 移到 1 和新事件 -> 011
- 在时隙 2 处,没有事件,因此我们将两个位都向左移一位 -> 110
- 在时间段 3,没有事件再次向左移动 -> 100
- 在时间段 4,新事件 -> 001
- 在时隙 5,没有事件 -> 010
- 在时间段 6,新事件 -> 101
等等等等
我正在寻找的是有关如何以适当且有效的方式解决此问题的提示或示例。 标准是低复杂度和低内存要求,即没有大的变量分配。
我对位操作知之甚少,但我知道基础知识,例如> & ^ 但是将它们组合在一个“大”的上下文中是具有挑战性的,所以任何建议/帮助都值得赞赏!
感谢高级
【问题讨论】:
-
你已经描述了怎么做,所以我不太明白你想让我们告诉你什么
-
&&不是位操作 -
我希望得到一些面向实施的建议,例如如何将给定的示例带到实际的代码示例中
-
(buffer << 1) | new_event怎么样(这会在缓冲区中留下超过 3 个,但您可以忽略多余的) -
谢谢哈罗德,这可能只是解决方案,执行起来很简单。是的,缓冲区可能会变大,但正如您所说,这可以忽略不计。再次感谢!
标签: c