2017-11-22 16 views
0

私は16ビット整数の最下位6ビットを探しています。私の整数が139/0x008Bだとしましょう。python最下位6ビット整数

>>> "{0:b}".format(139) 
'10001011' 

だから、最下位の6ビットは、次のとおりです。

'001011' 
>>> int('001011', 2) 
11 

はしかし、私は>>オペレータでこれを行うことができると思ったが、それは私が期待するものを私に与えていません。

>>> 139 >> 6 
2 

誰かがこの2つの違いを説明できますか?

+0

モバイルでは完全な応答を送信できませんが、ビットマスク: 'number&0x3f'を使用する必要があります。 '0x3f'は文字通り' 0b111111'で、 '&'はビット単位の 'and'です。 – Nepho

答えて

1

シフトはビットを再配置するためのものであり、分離するためではありません。これは「マスキング」と呼ばれ、あなたの場合はあなたの番号で「と」のビットマスクが必要です。これは、Pythonの&オペレータで行われます。論理的な "and"オペレータとは根本的に異なるので、混同しないでください!

>>> bin(139 & 0b111111) 
'0b1011' 
0

私はあなたがビット単位の「と」演算子(&)とない右シフト演算子(>>)を使用したいかもしれないと思います。

は、次の試してみてください。139 & 0b111111あなたの6つの最下位ビットを与える必要があります

関連する問題