1 + 1 和给出错误结果的可能性有多大?

What are the chances of a 1 + 1 sum giving the wrong result?

我知道,尽管我们希望相信计算机不会出错,但晶体管并不完美,1 + 1 并不总是 return 2,在晶体管级别。

我也知道,为了保护我们免受错误,现在大多数计算机都有冗余、错误检测和纠正算法。

也就是说,以下 C++ 程序在没有警告的情况下打印错误结果的可能性有多大?还有机会吗?

#include <iostream>
using namespace std;

int main()
{
    int a = 1, b = 1;
    int sum = a + b;

    cout << "Sum = " << sum;

    return 0;
}

假设到 2020 年,我们使用的是平均 1000 美元的 x64 笔记本电脑。

这个问题的范围更广。我们每秒 运行 数十亿次计算,我想知道在理论上,一个复杂的程序会出错多少。

是的,1 + 1 有可能产生 2 以外的结果。发生这种情况的可能性几乎为零,无法衡量。

之所以如此,原因如下:

  1. 首先,在量子层面出现问题的可能性极低。 "glitches"这个词在IT中确实存在,但在绝大多数情况下,它是由于某些硬件故障引起的,例如网线未完全接触。在软件中观察到故障的剩余极少数情况下,它只是用作 "we are not quite sure why this happened" 的另一个术语。这很可能是由于逻辑错误、多线程问题或其他一些非量子效应造成的。无论如何,由于量子不确定性引起的故障不会引起我们行业需要考虑的任何问题。

  2. 您要在其上运行 运行 您的这个小测试程序的计算机系统不断 运行ning 兆字节的代码执行各种其他功能,所有这些依靠 1+1 或任何其他总是产生正确结果的计算。如果稍有不慎,计算机就会崩溃并引起轰动。因此,您的微不足道的小程序甚至不需要 运行:您的计算机和全球数亿台日以继夜完美运行的计算机证明 1+1 始终以极高的确定性计算为 2。