パイプイコール演算子 \'|=\' の力をいつどのように活用するか

Barbara Streisand
リリース: 2024-10-23 18:18:52
オリジナル
558 人が閲覧しました

When and How to Harness the Power of the Pipe Equal Operator

パイプ等号演算子「|=」を詳しく見る: ビットごとの操作をわかりやすく解説

プログラミングの分野では、膨大な数の演算子が使用されます。プログラマーがデータを操作して計算を実行できるようにします。中でも、とらえどころのない「|=」演算子に頭を悩ませる人は多いでしょう。オープンソース リポジトリでよく見かけるこの謎の演算子は、ビット単位の演算を理解するための鍵を握っています。

「|=」演算子は、本質的には、ビット単位の OR 演算子 (「|」) を含む代入演算の簡潔な形式です。 。これは「= (代入) 演算子に似ていますが、パイプ (「|」) 文字が追加されており、ターゲット変数を変更する洗練された方法を提供します。

たとえば、次のコード スニペットを考えてみましょう:

<code class="java">Notification notification = new Notification(icon, tickerText, when);
notification.defaults |= Notification.DEFAULT_SOUND;
notification.defaults |= Notification.DEFAULT_VIBRATE;</code>
ログイン後にコピー

ここでは、「|=」演算子を使用して、「notification」オブジェクトの「defaults」プロパティにフラグを追加しています。これは、次の拡張形式と同等です:

<code class="java">notification.defaults = notification.defaults | Notification.DEFAULT_SOUND;
notification.defaults = notification.defaults | Notification.DEFAULT_VIBRATE;</code>
ログイン後にコピー

ご想像のとおり、「Notification.DEFAULT_SOUND」および「Notification.DEFAULT_VIBRATE」定数は、2 の累乗で表されるフラグ値を保持します:

<code class="java">public static final int DEFAULT_SOUND = 1;
public static final int DEFAULT_VIBRATE = 2; // equivalent to 1 << 1 or 10 in binary
ログイン後にコピー

ビットごとの OR 演算を採用することで、効率的なフラグ操作が可能になります。フラグの追加は、ビット単位の OR 演算を実行するだけで簡単です:

<code class="java">int myFlags = DEFAULT_SOUND | DEFAULT_VIBRATE; // 001 | 010 -> 011
myFlags |= DEFAULT_LIGHTS;</code>
ログイン後にコピー

逆に、フラグが設定されているかどうかのテストは、ビット単位の AND 演算子 (「&」) を使用して実行できます:

<code class="java">boolean hasVibrate = (DEFAULT_VIBRATE & myFlags) != 0;</code>
ログイン後にコピー

ビットごとの OR 演算子と、その演算子をパイプ等価演算子と組み合わせて使用​​することを理解することは、コードの理解とデバッグの基礎です。ビット単位の操作の複雑さを解明することで、「|=」演算子の可能性を最大限に引き出し、その能力を利用してフラグを簡単に操作できるようになります。

以上がパイプイコール演算子 \'|=\' の力をいつどのように活用するかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!