补充/否定不起作用

时间:2013-06-04 17:54:06

标签: c# negation complement

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

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

1 个答案:

答案 0 :(得分:1)

您所描述的系统称为ones' complement,而大多数现代环境(包括C#)中使用的系统。使用的是two's complement。在这个系统中,-1是1111,-2是1110等。这意味着你得到的数字是正确的,因为~1 == -2