2011-01-07 11 views
1

私はMySQLでBitwiseを使う必要があると思います。BITWISEと混同して、私はMySQLを使用しています

しかし、私は

SELECT 29 | 15; 

戻り

31 

http://dev.mysql.com/doc/refman/5.0/en/bit-functions.html

と困惑している私は、ビット単位について理解できるか読んでてきたが、私は迷ってしまいました。

+0

待ち、あなたはどのようにビット演算子の仕事を頼みますか? – Bobby

+0

私は知っている、私はなぜそれが "マスク"と呼ばれる瞬間の前に戻ることができることを望む:) –

答えて

6

まあ、29では、ビット16,8,4,1が設定されています。

15で、ビット8,4,2,1が設定されます。

"xまたはy"(|)は、 "xまたはyまたは両方に設定されたすべてのビットを設定する"ことを意味します。

だから、29 |図15では、ビット16,8,4,2,1が全て設定されている。

16 + 8 + 4 + 2 + 1 = 31

これは、あなたの質問にお答えしていますか?

+0

部分的に、私は数字の中で少しを見たいと思ったらどうしたのですか? – Jules

+1

"この番号はこの番号に設定されていますか"を意味しますか?なぜ、あなたは 'と'を使うでしょう:(x&4)。ビット4がセットされている場合は4が返され、そうでない場合は0が返されます。これは、4ではビット4のみが設定され、それ以外のビットはセットされず、x&yは " 「xとyの両方」。 (2)が15と2の両方で設定されている唯一のビットであるため、(15&2)は2を返します。一方、(29&2)は0を返します。 29と2の両方に設定されています。 –

+0

ええと、それはフィールド&16を選択する数字の中で16を探していましたか?だからこれをさらに進めると、値が32になるまでフィールド値は16を返します。なぜなら、使用される数値が高いほどこの点までは16になるからです。 – Jules

関連する問題