私はいくつかの個人的な仕事のためにこの機能を必要としています。これを行うのは一般的に簡単ですが、ビットシフトを実際に試したことはありません。整数を符号なし整数のベクトルに変換しようとする次のコードがあります。ここで、それぞれは 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 までの整数に対しては問題なく動作しますが、失敗します。スタックを使用してビットの順序を逆にし、最上位ビットが最終的な戻り値の左側にくるようにします。これが壊れているのはなぜですか?どうすればクリーンアップできますか? ありがとうございました