【发布时间】:2016-01-02 00:53:48
【问题描述】:
我正在研究一个 fft 实现的位反转算法,到目前为止我的实现是
//assume the proper includes
template<unsigned long bits>
unsigned long&& bitreverse(unsigned long value){
std::bitset<bits> input(value);
std::bitset<bits> result;
unsigned long j=input.size()-1;
for (unsigned long i=0; i<input.size(); ++i) {
result[i]=input[j];
j--;
}
return std::move(result.to_ulong());
}
我需要能够反转 N 位字中的位。我当前的实现是功能性的,但我想重写它以便结果可以用作constexpr,函数签名需要是:
template<unsigned long bits>
constexpr unsigned long&& bitreverse(unsigned long value);
或:
template<unsigned long bits,unsigned long value>
constexpr unsigned long&& bitreverse();
或类似的东西......
我不确定如何开始实施。
如果可能,我想避免按位运算,但我并不反对。
谢谢
【问题讨论】:
-
我发现这是一篇有趣的文章:“C 中位反转的最佳算法(从 MSB->LSB 到 LSB->MSB)”stackoverflow.com/questions/746171/…
标签: c++ c++14 constexpr std-bitset