Что рекомендуется для манипулирования набором битов?

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

5
задан Hunter McMillen 15 March 2012 в 16:06
поделиться