我需要这个函数来完成一些个人工作,虽然这样做通常是微不足道的,但我之前并没有真正玩过移位。我有以下代码,它试图将整数转换为无符号整数的向量,其中每个是 1 或 0(代表位)。我可以假设整数总是大于或等于 0。这是我的代码:
vector<unsigned int> toBinary(int x)
{
stack<unsigned int> s;
vector<unsigned int> ret_val;
for (unsigned i = 0; i < sizeof(x); ++i)
{
int z = ((x >> i) & 1) ? 1 : 0;
s.push(z);
}
unsigned num_bits = s.size();
for (unsigned i = 0; i < num_bits; ++i)
{
ret_val.push_back(s.top());
s.pop();
}
return ret_val;
}
这适用于最大 16 的整数,然后失败。我使用堆栈来反转位的顺序,因此最重要的位在最终返回值的左侧。为什么这个坏了,我该如何清理它?谢谢