12

2の補数法-を生成し-(x + 1)ます。

たとえば、JavaScriptがチルダに遭遇すると、彼は次のメソッドを使用します。

~5 = -(5+1) = -6.

罰金-もっと深く行きましょう。

次に、2の補数法について説明します。

5        = 0000 0101
Flip     = 1111 1010
add one  = 1111 1011

1111 1011です-5。_

どうやって ?

再び:フリップ:

0000 0100 

1つ追加:

0000 0101

そして、それはでした-5

では、これはどのように解決するの ~5=-6でしょうか?

これ-6はどこから来たの?

4

6 に答える 6

20

まず~、これがビットごとの反転演算子であり、否定演算子とは異なることを理解する必要があります-~はビットごとの反転のみを行いますが、negate 演算子-はビットごとの反転を行い、1 を追加します (整数の場合)。

あなたが説明したように、正の数nから-n2 の補数法を使用する場合は、n をビットごとに反転させて 1 を追加します~n=-n-1

例えば:

5               = 0000 0101
Flipped (~5)    = 1111 1010

では、どの数字が1111 1010表すのでしょうか? 最初の桁が 1 であるため、負の値であることがわかります。どの値を見つけるには、次のようにします。

-(flip(1111 1010) + 1) =
-(0000 0101 + 1)
-(0000 0110) =
-6
于 2012-09-09T07:53:39.120 に答える
9

~5 = -(5 + 1) = -6

ここまでは順調ですね。ただし、~は 2 の補数ではなく、2 進反転演算子です。

5     = 0000 0101
flip  : 1111 1010

-6

それは明らかですか?

于 2012-09-09T07:55:06.133 に答える
3

~ビット単位の NOT 演算子です (オペランドのビットを反転するだけです)。

正数の場合n

~n + 1 = -n
于 2012-09-09T08:00:36.367 に答える