c# - 为什么是-2?为什么不是-3 或-1?

标签 c#

class Program
{
    static void Main(string[] args)
    {
        int a = Int32.MaxValue;
        int b = Int32.MaxValue;             

        Console.WriteLine(a+b);
    }
}

输出:-2

发生溢出,结果是-2,如何计算得到?

最佳答案

将其记为二进制字符串:

 0111 1111 1111 1111
+0111 1111 1111 1111
--------------------
 1111 1111 1111 1110

而后者正好是-2。这是因为第一个数字是 -2^31 而不是 2^31。因此,总和为 -2^31 + 2^30 + 2^29 + ... + 2^2 + 2^1 = -2

(事实上,Int32 有 32 个二进制数字,而不仅仅是 16 个)

关于c# - 为什么是-2?为什么不是-3 或-1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33098378/

相关文章:

c# - AS/400 查询响应时间

c# - 我们应该密封单例吗?我们应该首先尝试继承单例吗?

c# - 快速清除 NHibernate 数据库

c# - 如何通过 MVC C# Razor 使用 Google Adsense

c# - .NET MVC API - 获取请求中的点(句号)

c# - WM_QUERYENDSESSION 给我带来了问题

c# - 从C#WinForms错误消息中提取特定信息

c# - 使用 C# TcpChannel 服务器的 Java RMI 客户端

c# - 在数据库中插入记录时连接必须有效且打开

c# - 您如何测试重命名的部分方法?