-2

こんにちは、私が直面している問題を示すために小さなプログラムを書きました

long n;
n = 1;    //1=0001  //2=0010 //-2=1101

Console.WriteLine(n+" "+ ~n);
Console.WriteLine(n+~n);

出力は次のようになります。

1 -2
-1

私が知っているように、〜記号は同じ負の数を与える必要がありますが、次のリンクによると、取得している数は常に元の数よりも1つ多く、取得する必要がある答えは同じである必要があり、否定を追加すると元の数値に、別の数値ではなく 0 を取得する必要があります http://visualcsharptutorials.com/reference/converting-negative-numbers-to-binary

誰がそれの何が悪いのか教えてもらえますか? 私は.net 4.5、c#5.0、vs 2012を使用しています

4

1 に答える 1

1

あなたが説明しているシステムは1 の補数と呼ばれ、最新の環境 (C# を含む) で使用されているシステムではありません。使用されるのは2 の補数です。このシステムでは、-1 は 1111、-2 は 1110 などです。これは、取得している数値が正しいことを意味します~1 == -2

于 2013-06-04T19:09:10.053 に答える