Я работаю над программой моделирования машин. У меня есть вектор наборов битов для основной памяти, так что я могу использовать указатель на этот вектор 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! Это мой первый вопрос этому сообществу после долгогопоиска в Google. Я ценю понимание каждого!