重複の可能性:
javascript のビット単位の理解
ここで見つけました:フロントエンドインタビューの質問は下にあります。このコード ~~3.14 は何を返しますか?
私はグーグルで検索しましたが、これについては何も見つかりませんでした。
重複の可能性:
javascript のビット単位の理解
ここで見つけました:フロントエンドインタビューの質問は下にあります。このコード ~~3.14 は何を返しますか?
私はグーグルで検索しましたが、これについては何も見つかりませんでした。
これは3を返します~
。JavaScriptのビット単位のNOT演算子を表します。
基本的に、〜3.14は〜3と同じで、バイナリの〜011 => 100または基数10の4です。〜4または〜100は基数10の011または3です。
チルダは、入力を32ビット整数に変換した後、入力に対してビット単位のNOTを実行します。
MDNから:
任意の数にビット単位で注意すると、
x
が得られ-(x + 1)
ます。たとえば、~5
を生成し-6
ます。
あなたの場合:
~~3.14
= -((~3.14) + 1)
= -(-(3.14 + 1) + 1)
= -(-(3 + 1) + 1)
= -(-4 + 1)
= -(-3)
= 3
~
JavaScript (および C/C++ およびその他の言語)のビット単位の補数演算子です。ここで詳細を見つけることができます:ビットごとの補数 (~) 演算子はどのように機能しますか?
この場合:
3.14
は浮動小数点から整数に変換されるため、 になり3
ます。~3
これは-4
、2 の補数表現によるものです。~(-4)
となり3
ます。基本的に、は2 の補数表現の整数に~n
等しいです。-n-1