2016-09-19 3 views
-1

비트 배열에서 모든 16 비트 정수의 최하위 2 비트를 제거하고 싶습니다. 그들은 다음과 같이 저장됩니다 :파이썬 비트 배열 조작

010101**00**10010101101100**00**10101010..... 

. (별표 사이의 제로는 제거 될 첫 번째를 무시하고 그들이 모든 16 비트 (있다)).

일반 루프 검사 인덱스 (매 16 비트마다 7 번째 및 8 번째)를 사용하여 간단히 제거 할 수 있습니다.

하지만 ... 더 있습니다 pythonic 방법이 있습니까? 나는 조각 표기법이나 이해력 목록을 생각하고 있습니다. 아마 모든 숫자를 4로 나누고 14 비트로 인코딩 할 수 있습니다 (그렇게 할 수있는 방법이 있다면).

답변

2

마스킹을 통해 비트를 아주 쉽게 지울 수 있습니다. 당신이 비트 8을 취소 할 7 경우에 당신은 이런 식으로 작업을 수행 할 수 있습니다

a = int('10010101101100',2) 
mask = ~((1 << 7) | (1 << 8)) 
bin(a&mask) 

자세한 정보를 here!

에서 마스킹에 대해