好的,我想要的很简单:
- 设置数字的第 N 位(= 使其为“1”)
- 取消设置数字的第 N 位(= 使其为“0”)
到目前为止,这是我的代码(以 2 个宏的形式):
#define SETBIT(X,Y) X|=(1ULL<<(Y))
#define UNSETBIT(X,Y) X&=(~(1ULL<<(Y)))
它们都工作正常。事情是:
- 有什么可以优化的吗?
- 可以做得更快吗?
(这两个操作应该每秒执行数百万次,因此性能非常重要)。
最佳答案
您可以通过删除宏来略微加快编译时间,但仅此而已。 Bit twiddling 足够快,所以这应该不是问题。
这是惯用的做法,我不会改变任何事情。
关于c++ - 设置和取消设置 64 位整数中的特定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14092179/