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 の例を考えてみましょう:
この二重否定は、データを効果的に小数切り捨て前の初期状態に「反転」させます。
以上が## JavaScript で ~~ 演算子は何をしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。