## JavaScript で ~~ 演算子は何をしますか?

Barbara Streisand
リリース: 2024-10-25 12:55:03
オリジナル
562 人が閲覧しました

## What Does the ~~ Operator Do in JavaScript?

JavaScript の ~~ 演算子の解読

ゲーム物理ライブラリを詳しく調べているときに、謎めいた ~~ 演算子に遭遇したことがあるかもしれません。 ~ (ビット単位の NOT) 演算子に似ているため、その機能に疑問を感じます。これは単に二重否定で同じ値を返すだけなのでしょうか?

驚くべきことに、~~ 演算子は実際にそのビット単位の NOT の原点を超えます。これは、小数点以下をすべて削除するという JavaScript 独自の目的を果たします。

小数点削除の背後にある理由

この動作は、オペランドの符号付き 32 への暗黙的な変換に起因します。 -bit ビット単位の演算が実行される前の整数。したがって、~~ 演算子は次のように動作します:

function(x) {
  if(x < 0) return Math.ceil(x);
  else return Math.floor(x);
}
ログイン後にコピー

ただし、この変換は入力値 (x) が -(2^31) ~ の範囲内にある場合にのみ適用されることに注意することが重要です。 2^31 - 1. これらの境界を超えるとデータ オーバーフローが発生し、予期しない動作が発生する可能性があります。

~~

を使用する利点と欠点文字列を数値に変換する場合、~~ はオーバーフローしやすいため、使用には注意が必要です。さらに、その意図された目的は数値変換と完全には一致していません。代わりに、x または Number(x) を使用すると、より信頼性が高く直感的なオプションが提供されます。

ビット単位の NOT ロジック

~~ が 32 ビットの二重否定として機能する理由を理解するには整数の場合、-43.2 の例を考えてみましょう:

  • -43.2 バイナリ: 111111111111111111111111010101
  • ビットごとの反転:すべてのビット、結果は 00000000000000000000000000101010
  • Double Negation: すべてのビットを再度反転し、元のバイナリ表現に戻します: 11111111111111111111111111010101
  • 10 進数変換: -43.0

この二重否定は、データを効果的に小数切り捨て前の初期状態に「反転」させます。

以上が## JavaScript で ~~ 演算子は何をしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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