ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScriptでビットごとの否定を実行する方法

JavaScriptでビットごとの否定を実行する方法

青灯夜游
リリース: 2021-12-07 12:12:28
オリジナル
3275 人が閲覧しました

JavaScript では、「~」演算子を使用してビットごとの否定を実装できます。構文は「~ オペランド」です。「~」演算子は、指定されたオペランドをバイナリ整数形式に変換し、バイナリオペランドはビットごとに反転されます。

JavaScriptでビットごとの否定を実行する方法

このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。

JavaScript では、「~」演算子を使用してビットごとの否定を実装できます。たとえば、~1 = -2、~-3=2、~true=-2、~false=-1

「~」演算子は、指定された値のバイナリ表現を表示し、バイナリを選択できます。オペランド ビットごとに否定演算を実行します。

  • ステップ 1: オペランドを 32 ビット 2 進整数に変換します。

  • ステップ 2: 反転演算を少しずつ実行します。

  • ステップ 3: 2 進数の 1 の補数を 10 進数の浮動小数点数に変換します。

12 に対してビット単位の NOT 演算を実行すると、戻り値は -13 になります。

console.log( ~ 12 );  //返回值-13
ログイン後にコピー

次の図は、12 に対してビット単位の NOT 演算を実行するプロセスを算術式の形式で解析したものです。

JavaScriptでビットごとの否定を実行する方法

#ビットごとの反転の計算方法

ビットごとの反転演算ルールの手順:

1. 10 進数を元のコードに変換します。

元の 2 進数コードに変換します。最上位ビットは符号ビットです。0 は正の数、1 は負の数です。

    十进制   ---->  原码
      1   ---->  00000001
     -1   ---->  10000001
ログイン後にコピー

2. 元のコードを変換します。 code to Inverse code

正の数の逆コードは元のコード、負の数の逆コードは符号ビットを変更せず、残りのビットは反転されます

    十进制  ---->   原码    ---->  反码
      1    ----> 00000001 ----> 00000001
     -1    ----> 10000001 ----> 11111110
ログイン後にコピー

3.逆コードを補数コードに変換します

正の数の補数は元のコードのままですが、負の数の補数はその補数に 1

    十进制  ---->    原码   ---->   反码   ---->  补码
      1    ----> 00000001 ----> 00000001 ----> 00000001
     -1    ----> 10000001 ----> 11111110 ----> 11111111
ログイン後にコピー

を加えたものです。補数を反転して元のコードを取得します。

整数

補数を反転した後の符号位置は 1 であり、負の整数であるため、負の整数の計算方法に従って補数が計算されます 元のコードを取得する逆演算 元のコード code を取得する逆演算。まず、逆補数を逆コードに変換します。

式: 逆コード = 補数 - 1

、反転されたコードを元のコードに変換します。符号ビットは変更されず、他のビットは反転されます

  十进制  ---->    原码    ---->   反码    ---->   补码     ---->  补码取反   ---->  取反补码转成反码  ---->  转成原码
    1   ----> 00000001  ----> 0000001  ---->  00000001  ----> 11111110   ---->   11111101    ---->  10000010
ログイン後にコピー
負の整数の補数を反転した後の符号位置は 0 となり、正の整数になります. 正の整数の補数と補数はそのままなので、逆演算を行う必要はありません

  十进制  ---->    原码    ---->   反码     ---->   补码      ---->   补码取反得原码  
    -1  ---->  10000001  ----> 11111110  ---->  11111111   ---->     00000000    
ログイン後にコピー

5. 元のコードをバイナリに変換します

 十进制  ---->    原码    ---->   反码    ---->   补码     ---->  补码取反   ---->  取反补码转成反码  ---->  转成原码  ---->  转成二进制
    1   ----> 00000001  ----> 0000001  ---->  00000001  ----> 11111110   ---->   11111101    ---->  10000010 ---->   -2
ログイン後にコピー
  十进制  ---->    原码    ---->   反码     ---->   补码      ---->   补码取反得原码   ---->  转成二进制
    -1  ---->  10000001  ----> 11111110  ---->  11111111   ---->    00000000     ---->     0
ログイン後にコピー

したがって、 ~1=- 2、~-1=0

否定とその後の否定の役割~~
演算子 ~ はビット単位の否定を意味します。表面、

~~

(反転してから否定する) は意味がありませんが、実際には JS で実行できます。浮動小数点数を整数に変換します。

 console.log(~~1.11);          //1
 console.log(~~-25.11);       //-25
ログイン後にコピー
【関連する推奨事項: JavaScript 学習チュートリアル

以上がJavaScriptでビットごとの否定を実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート