2012-03-15 3 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 비트 비트 세트로 복사 할 때 나는 무엇을해야합니까?

고맙습니다. 이것은 많이 검색 후이 커뮤니티에 내 첫 질문입니다. 모두의 통찰력에 감사드립니다!

+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

실제로 overthinking. 그것을 고맙다, 그것은 예상대로 정확하게 집계되고 달렸다. – absterge

+0

당신은 오신 것을 환영합니다. StackOverflow에 오신 것을 환영합니다! 내 대답을 수락하는 것을 잊지 마십시오 (체크 표시를 클릭하십시오). 과제를 제출 한 후에는 ** 당신이 대답 할 수있는 질문을 둘러보십시오! –

관련 문제