Bil*_*eal 0 c++ bit-manipulation
我正在寻找一种快速的方法来设置一个基于数字返回位掩码的方法.基本上,在数字输入之前需要发出4个比特.这是我的意思:
FOO(1); //返回0x000F foo(2); //返回0x00FF foo(3); //返回0x0FFF foo(4); //返回0xFFFF
我可以使用一个大的switch语句,但我不知道输入类型有多宽.(这是模板功能)
这是我尝试的第一件事:
template <typename T> T foo(unsigned short length)
{
T result = 0xF;
for (unsigned short idx = length; idx > 0; idx--)
{
result = (result << 4 | 0xF);
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
但它花了很多时间在for循环上做维护.我没有想到的任何聪明的方法吗?
Billy3
怎么样的:
template <typename T> T foo(unsigned short length)
{
return (T(1) << (length * 4)) - 1;
}
Run Code Online (Sandbox Code Playgroud)