2012-04-01 2 views
1

I는 7 바이트/56 비트가 범위에 정수 치를 입력 : 시공 후부스트 dynamic_bitset 구축시에 그 하나의 첫번째 비트 세트 비트 세트 비트

boost::dynamic_bitset<> b(56, 1); 

를, I는 원하는 정수 값 (예 : 2019)을 4 ~ 15 번째 비트에 배치합니다. 비트 연산없이이를 수행하는 간단한 방법이 있다면 궁금합니다. 기본적으로, 내가 알고있는 정수 값으로 비트 범위를 설정하고 싶습니다. 어떤 조언을 주셔서 감사합니다.

답변

4

boost::dynamic_bitset<>은 기능이 매우 적습니다. 유일한 가능성은 일반 루프를 사용하는 것입니다.

template <typename Bitset> 
void set_in_range(Bitset& b, unsigned value, int from, int to) 
{ 
    for (int i = from; i < to; ++i, value >>= 1) 
    b[i] = (value & 1); 
} 

boost::dynamic_bitset<> b(56, 1); 
set_in_range(b, 2019, 4, 15); 
+0

이 방법이 효과적입니다. 답변 감사합니다. – 01100110

+0

for 루프에서 'i 01100110

관련 문제