ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript のビットごとの演算子のアプリケーションの簡単な分析_JavaScript スキル

JavaScript のビットごとの演算子のアプリケーションの簡単な分析_JavaScript スキル

WBOY
WBOYオリジナル
2016-05-16 17:01:341261ブラウズ

ほとんどの言語はビットごとの演算子を提供しています。ビットごとの演算子は c や c などの言語で広く使用されていますが、JS や AS などのスクリプト言語では適用例が少ない場合があります。ビットごとの演算子を使用すると良い結果が得られます。
以下は、私自身の知識に基づいた js でのビット演算の使用についての簡単な話です (他の言語にも当てはまります)。間違いがあれば修正してください。

ビット演算子は、オペランドを数値ではなく一連の個々のビットとして扱います。その前に、「ビット」とは何かについて触れておく必要があります。
数値または文字は、0 と 1 のシーケンスとしてメモリに格納されます。それぞれの 0 と 1 はビットと呼ばれます。たとえば、10 進数のデータ 2 は、次のように格納されます。メモリ内のビット値を変更すると、この値の意味も変わります。たとえば、2 の前を 1 つ移動すると、記憶装置は 0 0 0 になります。 0 0 1 0 0。この値は 10 進数の 4 を表します。これがビット単位演算子の動作原理です。

6 つのビット演算子があります
& ビット単位 AND
| ビット単位または
^ ビット単位 XOR
~ 否定
>> 右シフト
<<左に移動


1 & 演算子
& は、オペランド内の対応するビットを特定の方法で結合します。対応するビットがすべて 1 の場合、結果は 1 になります。は 0、結果は 0
1 と 3 の結果は 1
どのように機能するかを見てみましょう:
1 のバイナリ表現は 0 0 0 0 0 0 1
3 のバイナリ表現 Expressed as 0 0 0 0 0 1 1
& の規則に従って得られた結果は 0 0 0 0 0 0 0 1 です。10 進数表現は 1

任意のビットが 0 である限り、& 演算の結果は 0 になるため、& を使用して変数の不要なビットを 0 に設定できます。たとえば、変数のバイナリ表現は 0 1 0 0 です。 1 0 0 1, I 下位 4 ビットを保持したい場合は、& 0x0F を使用して上位 4 ビットを削除します (覚えておいてください: 0x0F は 16 進表記で、対応する 2 進数は 0 0 0 0 1 1 1 1 です)。この機能には非常に重要な用途があります。後で説明します。

2 | 演算子
| の違いは、対応するビットのオペランドが 1 の場合、結果は 1
1 になることです。

3 ^ 演算子

^ 演算子は | に似ていますが、1 つの違いは、両方の演算ビットが 1 の場合、結果は 0
0 1 0 0 0 0 0 1
0 1 0 1 になることです。 1 0 1 0
は 0 0 0 1 1 0 1 1
を生成します

4 ~ 演算子

~ はビット単位の否定であり、1 は 0 に変化し、0 は 1 に変化します

5 シフト演算子 シフト演算子は、指定された値に従ってビットを左または右に移動します。

<
は左に移動し、>> は右に移動します。 、空いたビットは 0

で埋められます。

たとえば、0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 (10 進数 16387) を左に 2 桁移動すると、
0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 となります。 0 (10 進数の 12)
を右に 2 桁移動したものは
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 (10 進数 4096)


以下では、いくつかの具体的なアプリケーションを紹介します
前述したように、2 は 1 桁進められて 4 になります。この機能は、乗算演算を実行するために使用できます
2 <<1 =4
3 <<1 = 6
4 <<1 = 8
同様に>>

任意の小数は整数に丸めることができます
例: 3.14159 >> 0 = 3;

^コンピューティング サービスには、次のコードのような魔法の機能があります


コードをコピー コードは次のとおりです:
<script><br>var n1 = 3;<br>var n2 = 4;<br>n1 ^= n2;<br>n2 ^= n1;<br>n1 ^= n2;<br></script> 🎜>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。