2012-03-15 13 views
5

私は機械シミュレーションプログラムに取り組んでいます。私は主メモリ用のビットセットのベクトルを持っているので、特定の "ワード"にアクセスするために、このベクトルへのポインタ、pMemory-> at(i)を使うことができます。私は実際にベクトルのビットセットのデザインを好んでおり、私はそれに固執しています(このプログラムは約6時間で終了します、eek!)ビットセットの操作にはどのような方法が推奨されますか?

私は、 (シミュレーションされたレジスタや他のメモリ位置など)のビットセットを取得する方法について説明します。私はこれを思いついた:

#include <bitset> 
#include <iostream> 
#include <sstream> 
#include <string> 

using namespace std; 

int main() 
{ 


    /** demonstrating use of stringstream to/from bitset **/ 
    { 
     bitset<12> sourceBits(std::string("011010010100")); 
     bitset<12> targetBits(0); 

     stringstream iBits(stringstream::in | stringstream::out); 

     iBits << sourceBits.to_string(); 
     cout << targetBits << endl; 
     iBits >> targetBits; 
     cout << targetBits << endl; 
    } //end stringstream to/from bitset 

    return 0; 
} 

これはうまくいき、私はこの技術を自分のプログラムに適合させることができます。

私の質問は、これが良い考えですか?ビットセット>>と< <の演算子を使用することについて何か不足している基本がありますか?このマニュアルをすべて論じることが本当に必要ですか?

また、接頭辞として、12ビットのビットセットを16ビットのビットセットにコピーするときはどうすればよいですか?

ありがとう、stackoverflow!これは以降のこのコミュニティへの私の最初の質問です。グーグル。みんなの洞察に感謝します!

+0

+1。 –

答えて

9

あなたは問題を熟考しています。あるビットセットの値を別のビットセットにコピーするには、代入演算子を使用します。

#include <iostream> 
#include <bitset> 
int main() { 
    std::bitset<12> sourceBits(std::string("011010010100")); 
    std::bitset<12> targetBits(0); 

    targetBits = sourceBits; 

    std::cout << targetBits << "\n"; 
} 


あなたの接線質問が bitset::to_ulongによって回答されています。便利なデモプログラムの

#include <iostream> 
#include <bitset> 

int main() { 
    std::bitset<12> sourceBits(std::string("011010010100")); 

    std::bitset<16> sixteen; 
    sixteen = sourceBits.to_ulong(); 
    std::cout << sixteen << "\n"; 
} 
+0

確かに考え過ぎる。ありがとう、それはコンパイルされ、期待どおりに実行されます。 – absterge

+0

あなたは大歓迎です。 StackOverflowへようこそ!私の答えを受け入れることを忘れないでください(チェックマークをクリックしてください)。あなたが課題を提出した後、**あなたが答えることができる質問を見てください! –

関連する問題