gpt4 book ai didi

c++ - 二进制反转为十进制数

转载 作者:行者123 更新时间:2023-11-30 03:14:14 26 4
gpt4 key购买 nike

Create a template function named reversed_binary_value. It must take an arbitrary number of bool values as template parameters. These booleans represent binary digits in reverse order. Your function must return an integer corresponding to the binary value of the digits represented by the booleans. For example: reversed_binary_value<0,0,1>() should return.

这就是问题,我就是这样解决的。

template<bool...digits>
int reversed_binary_value()
{
vector<bool> vec = {digits...};
int result = 0;
for(int i = 0; i < vec.size(); i++)
result += pow(2 * vec[i], i);
return result;
}

template <int N>
void sum()
{
std::cout << "Number is: ";
}

int main()
{
std::cout << reversed_binary_value<1,0,0,0,1,1>();
//sum<reversed_binary_value<1,0,0,0,1,1>()>();
}

我正在尝试调用函数 sum 但出现此错误:调用非 constexpr 函数 'int reversed_binary_value()。我知道 for 不是编译时指令。我的问题是,如何调用函数 sum ?

最佳答案

您可以使用递归方法:

#include <iostream>

template <typename = void>
constexpr int binary() {
return 0;
}
template <bool d, bool...digits>
constexpr int binary() {
return d + 2 * binary<digits...>();
}

template <int N>
void sum() {
std::cout << N;
}
int main() {
sum<binary<1,0,1>()>(); // prints 5
}

这允许您为二进制函数添加 constexpr(无循环),并允许模板调用 sum 所需的常量传播 :)

关于c++ - 二进制反转为十进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58050245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com