2017-12-21 26 views
-3

특정 비트셋 <>을 사용하면 비트 세트의 m LSB 비트를 어떻게 선택하고 표시합니까? m은 정수 값입니다. 예를 들어비트 세트의 특정 범위 비트 선택 및 표시

나는 10110111011110111101111011000100 m은 = 8, 코드 11000100.

덕분에 많은 사람들이 즉시 분명 찾을 수없는 것이이 작업을 수행하는 상당히 깔끔한 방법이있다

+0

[다음은 API 문서입니다.] (http://en.cppreference.com/w/cpp/utility/bitset). 네가 알아낼 수있을거야. – StoryTeller

+0

나는 시프트를 시도하고 0000000000000000000000011000100을 표시 할 수있었습니다. 나는 0을 제거하려고합니다. 나는 그것이 청소년 문제라는 것을 이해하지만, 나는 단지 코딩하는 방법을 생각하고있다. –

답변

2

표시해야합니다.

숫자에서 하나를 빼면 현재 설정되어있는 최하위 비트가 재설정되고 모든 하위 비트가 설정된다는 사실에 달려 있습니다.

unsigned x = 0b10110111011110111101111011000100; 

unsigned m = 8; 

unsigned mask = (1 << m) - 1; 

unsigned result = x & mask; 

내가에서 동일한 기본 개념을 렌더링하는 당신에게 떠날거야 :

그래서, 순간의 bitset 부분을 무시하고, 일부 정수 유형 만 다루고, 우리는 같은 것을 할 수 있습니다 std::bitset 연산자.

당신의 의도는이 같은 것을 할 경우에 따라서, 자리,없이 비트 세트를 표시하는 음 ... 죄송하지만 직접 그를 지원하지 않는 경우 :

std::bitset<15> x; 

std::cout << x; 

당신은 정액을 항상은 0이되는 숫자의 수에 관계없이 정확히 15 자의 출력을 얻습니다. (심지어 bitsetstringstream에 쓰고 맨 앞의 0을 잘라내어 코드를 작성하는 것은 매우 쉽습니다.

+0

나는 그것을 풀 수 있었다, 고마워! –