-2

你好我写了一个小程序来演示我面临的问题

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

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

输出是这样的:

1 -2
-1

据我所知〜符号应该给出相同的负数,但是根据以下链接,我得到的数字总是比原始数字多一,我必须得到的答案应该是相同的,如果我加上否定到原始数字我应该得到 0 而不是另一个数字 http://visualcsharptutorials.com/reference/converting-negative-numbers-to-binary

谁能告诉我有什么问题?我正在使用 .net 4.5,c#5.0,vs 2012

4

1 回答 1

1

您所描述的系统被称为互补系统,它不是大多数现代环境(包括 C#)中使用的系统。使用的是二进制补码。在这个系统中,-1 是 1111,-2 是 1110,等等。这意味着你得到的数字是正确的,因为~1 == -2.

于 2013-06-04T19:09:10.053 回答