なぜビットセットを文字列に変換するのか分かりません。要素に直接アクセスするだけです。
bitset<10> myBitset(myValue);
for (int i = 0; i < 10; i++)
binary[i] = myBitset[i];
また、それがこれを行うの最も低いレベルの方法です、ビットシフトして行くことができる:
int mask = 1; // binary 10000000 00000000 ...
for (int i = 0, l = NUM_BITS; i < l; ++i) {
// binary & operation does
// AND logic operation for all corresponging bit
// so 0010&0011=0010
binary[i] = myValue & mask;
// move the bits in mask one to the right
mask = mask>>1;
}
あなたはビットセットでつもりなら、私はあなたの代わりにビットセットしておくことをお勧めしますビットセットでは、すべてのビットが実際には1ビットを占めるのに対し、bool
は少なくとも8ビットが大きいため、bool*
を使用しています。
最後に、ここで私はそのために作られたいくつかのテストコードがあります、あなたはベンチマークを行うには、それを使用することができます:
#include <iostream>
#include <bitset>
#define NUM_BITS 10
int main(int argc, char *argv[])
{
const int numBits = NUM_BITS;
bool binary[numBits];
const int myValue = 1;
std::bitset<NUM_BITS> myBitset(myValue);
//for (int i = 0; i < NUM_BITS; i++)
//binary[i] = myBitset[i];
for (int i = 0, l = NUM_BITS; i < l; ++i) {
std::cout<< (binary[i]?'1':'0')<<" ";
}
std::cout<<"\n";
int mask = 1; // binary 10000000 00000000 ...
for (int i = 0, l = NUM_BITS; i < l; ++i) {
// binary & operation does
// AND logic operation for all corresponging bit
// so 0010&0011=0010
binary[i] = myValue & mask;
// move the bits in mask one to the right
mask = mask>>1;
}
for (int i = 0, l = NUM_BITS; i < l; ++i) {
std::cout<< (binary[i]?'1':'0')<<" ";
}
}
あなたは文字列に変換しているのはなぜ?ビットセットからブールバッファに直接移動しないでください。 – PaulMcKenzie
@PaulMcKenzie:私が知っている唯一の方法です。 '.to_ulong'は私にとってはうまくいきませんでした。それは私が取り除きたいものです。 –
'bitset <10>'が変数に格納され、ループ内で変数を使用できるという事実を見逃したのでしょうか? – PaulMcKenzie