2016-10-04 36 views
0

私は以下を実行しようとしています - 正の数を負の数に変更してください。Javascript:正の数を負の数に変更しますか?

これを行うにはいくつかの方法があります。

x *= -1 

のように、変数の前に負の記号を置くだけです。つまり、x = 5の場合は-xが-5になります。

これはすばらしい略記ですが、違いが何であるかを知りたいと思っています。私はこの簡略化されたMDNに関するドキュメントをMDNで見つけることはできません。

私は他の方法もあると思います。

おそらく基本的な質問ですが、この明らかな省略形を理解していないのは面倒です。

アイデア?

+1

これはあなたのために役立ちますhttp://stackoverflow.com/questions/5574144/positive-number-to-negative-number-in-javascript –

+0

"簡略" [単項演算子](https:///developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Unary_negation_(-))は、 '* = 'を使用するために' 1'を '-1'に変更する方法を変えなければなりません。 -1'オプション? (ちなみに '-'と' * 'の両方がオペランドを数値に変換しようとしているので、' x * = "-1" 'は' x = "12"; x = -x; 。) – nnnnnn

+0

@martinの下にさらに詳しい情報を追加しました – nikjohn

答えて

3

Javascriptの単項演算子は、基本的には簡略関数です。 Unary (-)

-には1つの引数があります。あなたが渡した数。フードの下で、私はそれに-1を乗じて、製品を返すと推測しています。関数は次の行に沿って書くことができます。

function -(arg) { 
    return arg * -1; 
} 

これは推測ですが、確実に知るには、V8のコードベースを調べる必要があります。

更新:

だから、さらなる研究から、私はそれが-1によって代わりに乗算のだということを理解し、それは簡単な符号変化である可能性があります。私はV8の実装について言及しましたが、C++を吸ってしまったのでデッドエンドであることが判明しましたが、ECMA's specsIEEE 754 specsをここでSteve Hollaschのすばらしいブログで定義したところで、私は符号ビットの反転に傾いています。すべてのJavaScript番号は64ビットIEEE 754浮動小数点ている、彼らはそうのように表すことができる。

Sは符号ビットである
SEEEEEEE EEEEMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM 

。したがって、Unary -が符号ビットをちょうど反転させるように見えます。

関連する問題