2016-07-07 6 views
0

こんにちは私は、ビットが "オン"であるかどうかを調べるプログラムを書いていますが、 "オン"と "オフ"が何を意味するのか、ビットマスクの仕組みはよくわかりません。ビットマスクはどのようにPythonで動作しますか?

def check_bit4(input): 
    mask = 0b1000 
    checker = input & mask 
    if checker > 0: 
     return("on") 
    else: 
     return("off") 

ありがとう:

は、ここでは、コードです!

+1

https://en.wikipedia.org/wiki/Mask_(computing) –

+0

ありがとう!そのリンクは本当に助けになった! – mathtron999

答えて

1

コンピュータはビットで整数を表します。これは数値のバイナリ表現です(つまり、基数2を使用します)。バイナリの数字は0と1、または "off"と "on"です。あなたはバイナリに精通していない場合、あなたはそれをよく読んでする必要がありますが、基本的には次のようにバイナリでカウント:

0000 
0001 
0010 
0011 
0100 
0101 
0110 

のように...各列だから0から始まる2^nで表すことができます番号0101 = 2^3*0+2^2*1+2^1*0+2^0*1 = 5。今あなたが何かを "ビットマスク"するとき、あなたは基本的にあなたに価値のビットを見ているだけです。あなたのケースでは、あなたは "2^3"ビットだけを見ています。これは、各ビットにマスク内の対応するビットを単純に乗算するだけで簡単に実行できます。これは多くのことに役立ちます。時々、各ビットに意味を割り当て、それがオンかオフかを伝えることは非常に重要です。

あなたの例では、私たちは13で通過した場合、これは起こる:

13 means 1101 in computer speak 
1101 mask with 1000. Work on each bit individually: 
1 * 1 = 1 
1 * 0 = 0 
0 * 0 = 0 
1 * 0 = 0 
checker = 1000 which means 8. 
8 > 0 so return on. 

5でfalseを返す例を:

5 means 0101 in computer speak 
0101 mask with 1000. Work on each bit individually: 
0 * 1 = 0 
1 * 0 = 0 
0 * 0 = 0 
1 * 0 = 0 
checker = 0000 which means 0. 
0 is not > 0 so return off. 

・ホープ、このことができます。あなたは、Googleのマシン上でこのようなものに関する広範な情報を見つけることができるはずです。

+0

TFWでは、ANDは桁上げなしの乗算と変わらないことに気付きます。 – dorukayhan

関連する問題