2016-09-19 10 views
-1

ビット配列から16ビット整数のうち、最下位の2ビットを削除します。彼らはこのように保存されている:Pythonのビット配列操作

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

(アスタリスクの間にゼロが削除されますそれらの二つは、すべて16ビット(一番最初のを無視して)があります。)。

通常のforループチェックインデックス(16ビットごとに7番目と8番目)を使用して単純に除外できます。

しかし、もう1つがありますpythonicこれを行う方法は?私はいくつかのスライス表記法や多分理解のリストを考えています。多分、私はすべての数字を4で割って、14ビットでそれぞれを符号化することができます(それを行う方法があれば)。

答えて

2

マスキングを使用してビットを非常に簡単にクリアすることができます。あなたはビット8と7をクリアしたい場合は、このようにそれを行うことができます。here!

からマスキングに関する

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

より多くの情報を