2017-10-20 11 views
-1
int main() { 
    int x = 3613; 
    std::cout << "x= " << x << std::endl; 
    std::string xBin = std::bitset<16>(x).to_string(); 
    std::cout << xBin << std::endl; 
    unsigned long xDecimal = std::bitset<16>(xBin).to_ulong(); 
    std::cout << xDecimal << std::endl; 
    std::cout << std::endl << std::endl; 
    int b01 = 0b11001; 
    std::cout << "b01= " << b01 << std::endl; 
    int b02 = 0b1010; 
    std::cout << "b02= " << b02 << std::endl; 
    int b03 = b01 + b02; 
    std::cout << "int b03 = b01 + b02 = " << b03 << std::endl; 
    return 0; 
} 

출력 : STD로 얻어진 문자열 :: 비트 세트 <>이 불가능하면서이 정상 연산을 할 수있는 바이너리 리터럴C++ 11/C++ 14의 10 진수 변환을 통해 바이너리 리터럴을 작성하고 작성하는 방법은 무엇입니까?

x= 3613 
0000111000011101 
3613 

b01= 25 
b02= 10 
int b03 = b01 + b02 = 35 

. 그래서 ... 질문은 : 바이너리 리터럴을 "작성"하는 방법입니다. 예를 들어, std :: bitset <을 사용하여 얻은 10 진수에서 2 진수로의 변환을 통해? 친절한 도움을 기다리고 있습니다. 마르코

+0

는 "구성"무엇을 의미합니까? 'std :: bitset'과 문자열 출력과 같은 일을하지만 다른 함수를 사용한다는 것을 의미합니까? 'std :: bitset'을 사용하면 무엇이 문제가됩니까? – wally

+0

'to_ulong'의 문제점은 무엇입니까? – user2357112

+0

일반 연산에 비트 셋 연산을 사용하기 위해 std :: bitset에 대해 더 배워야한다고 생각합니다. – user2315094

답변

0
당신은 문자열로 변환하고 백업에 의해 bitsets에서 작동 안

- 대신 이진 연산자를 사용하여 그들에 작동 ... 그 bitsets의 포인트를 실종 : 단지 (... &, |, ^을 보통의 정수에서와 같이).

std::cout << std::bitset<3>(4) << " or " 
      << std::bitset<3>(2) << " = " 
      << (std::bitset<3>(4) | std::bitset<3>(2)) << std::endl; 

인쇄 : 100 or 010 = 110

당신은 위키의 모든 연산자를 찾을 수 있습니다 http://en.cppreference.com/w/cpp/utility/bitset

+0

일반 산술 연산을 위해 비트 셋 연산을 사용하기 위해 std :: bitset에 대해 더 배워야 할 것 같군요. – user2315094