1 + 1的总和给出错误结果的几率是多少?

问题描述 投票:0回答:1

我知道,只要我们想相信计算机会不断发展,晶体管就不是完美的,在晶体管级别上1 + 1并不总是返回2。

[我也知道,为了保护我们免受错误的侵害,当今大多数计算机都具有冗余,错误检测和纠正算法。

话虽如此,以下C ++程序在没有警告的情况下打印错误结果的机会是什么?甚至有机会吗?

#include <iostream>
using namespace std;

int main()
{
    int sum = 1 + 1;

    cout << "Sum = " << sum;

    return 0;
}

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

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

c++ sum cpu computation-theory computation
1个回答
0
投票

是的,有1 + 1产生除1以外的值的可能性。该发生的可能性非常接近零,无法测量。

之所以如此是由于以下原因:

  1. 首先,在量子水平发生问题的可能性极低。术语“故障”确实存在于IT中,但是在大多数情况下,它证明是由于某些硬件故障(例如,网络电缆无法完全接触)引起的。在软件中观察到故障的其余极少数情况下,它只是用作“我们不太确定为什么会这样”的另一个术语。这很可能是由于逻辑错误,多线程问题或其他一些非量子效应引起的。由于量子不确定性而引起的毛刺不会以任何速度发生,因此在我们的职业中也没有任何考虑的必要。

  2. 您要在其上运行此小测试程序的计算机系统一直在运行兆字节代码,这些代码执行各种其他功能,所有这些功能都依赖于1 + 1或任何其他计算,总能产生正确的结果。如果有任何轻微的事故发生,计算机将崩溃而死机。因此,您微不足道的小程序甚至不需要运行:您的计算机和全球数以亿计的计算机全天候工作,这证明了1 + 1总是被非常可靠地计算为2。

© www.soinside.com 2019 - 2024. All rights reserved.