Return 没有循环的位位置
Return bit positions without loops
有没有在 C++ 中使用 std::bitset 而不使用循环 (for/while) 来查找位位置的方法?
假设我们有一个二进制数 11001,我们想找到所有 0 的位置。
任何类型的预构建、时间 space 高效函数?
without using loops
we have a binary number 11001 and we'd like to find all 0s positions
自己展开循环。
void check(unsigned pos, unsigned number, std::vector<unsigned>& out) {
if (!(number & (1u << pos))) out.push_back(pos);
}
std::vector<unsigned> positions_of_0s(unsigned number) {
std::vector<unsigned> ret;
check(0, number, ret);
check(1, number, ret);
check(2, number, ret);
check(3, number, ret);
check(4, number, ret);
return ret;
}
有没有在 C++ 中使用 std::bitset 而不使用循环 (for/while) 来查找位位置的方法? 假设我们有一个二进制数 11001,我们想找到所有 0 的位置。 任何类型的预构建、时间 space 高效函数?
without using loops
we have a binary number 11001 and we'd like to find all 0s positions
自己展开循环。
void check(unsigned pos, unsigned number, std::vector<unsigned>& out) {
if (!(number & (1u << pos))) out.push_back(pos);
}
std::vector<unsigned> positions_of_0s(unsigned number) {
std::vector<unsigned> ret;
check(0, number, ret);
check(1, number, ret);
check(2, number, ret);
check(3, number, ret);
check(4, number, ret);
return ret;
}