パイプ等号演算子 (=) とは何ですか?
オープンソースのパイプ等号演算子 (|=) に遭遇した開発者ライブラリコードはその意味について疑問に思うかもしれません。この演算子は、論理割り当てと間違われることがよくありますが、重要なビット単位の OR 演算を保持します。
ビット単位 OR について
パイプ等価演算子 |= は = と同じように機能します。以下のコードでは、 |= 演算子はデフォルトの元の値と定数 DEFAULT_SOUND を組み合わせています:
notification.defaults |= Notification.DEFAULT_SOUND;
この操作は次と同等です:
notification.defaults = notification.defaults | Notification.DEFAULT_SOUND;
どこ |はビット単位の OR 演算子を示します。
定数マスクのビット単位 OR
この例では、定数 DEFAULT_SOUND、DEFAULT_VIBRATE、および DEFAULT_LIGHTS は 2 の累乗です:
DEFAULT_SOUND = 1 DEFAULT_VIBRATE = 2 (1これにより、ビット単位の OR を使用してフラグを追加または削除できます。例:
int myFlags = DEFAULT_SOUND | DEFAULT_VIBRATE; // 001 | 010 = 011別のフラグの追加:
myFlags |= DEFAULT_LIGHTS;新しいフラグを追加するだけです。
フラグの存在のテスト ]
ビット単位の AND 演算子 (&) は、フラグの存在をテストします:
boolean hasVibrate = (DEFAULT_VIBRATE & myFlags) != 0;結果が次の場合ゼロ以外の場合、フラグが設定されます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3