2
   switch (attribute.inputType & EditorInfo.TYPE_MASK_CLASS) {
            case EditorInfo.TYPE_CLASS_NUMBER:
            case EditorInfo.TYPE_CLASS_DATETIME:
            case EditorInfo.TYPE_CLASS_PHONE:
                mCurKeyboard = mSymbolsKeyboard;
                break;

            case EditorInfo.TYPE_CLASS_TEXT: 
                mCurKeyboard = mQwertyKeyboard;
        }

どういう意味ですか?

私のテスト結果は次のとおりです。

attribute.inputType = 17
EditorInfo.TYPE_MASK_CLASS = 15

case EditorInfo.TYPE_CLASS_TEXTどちらに切り替えますか= 1

4

2 に答える 2

4

バイナリで...

10001 // 17
01111 // 15

...演算子は、両方がどこに&あるかを一致させたいことを示します。bits1

ビット的には次のようになります...

10001 // 17
01111 // 15
-----
00001 // 17 & 15

bit両方の数字の最後だけが。として一致し1ます。

于 2012-09-09T22:26:10.673 に答える
2

これはビット演算子(ビットごとのAND)であり、簡単に次のように説明できます。

0110 & 1101 = 0100

詳細については、このチュートリアルを確認してください。

于 2012-09-09T22:27:38.727 に答える