第195章 IOCCC(2/2)
查中发现,由于一个简单的计算机,使基地的爱国者反导弹系统失效,未能在空中拦截飞毛腿导弹。当时,负责防卫该基地的爱国者反导弹系统已经连续工作了100个小时,每工作一个小时,系统内的时钟会有一个微小的毫秒级延迟,这就是这个失效悲剧的根源。爱国者反导弹系统的时钟寄存器设计为24位,因而时间的精度也只限于24位的精度。在长时间的工作后,这个微小的精度误差被渐渐放大。在工作了100小时后,系统时间的延迟是三分之一秒。
对一般人人来说,033秒是微不足道的。但是对一个需要跟踪并摧毁一枚空中飞弹的雷达系统来说,这是灾难性的——侯赛因飞毛腿导弹空速达42马赫(每秒15公里),这个”微不足道的”033秒相当于大约600米的误差。在宰赫兰导弹事件中,雷达在空中发现了导弹,但是由于时钟误差没有能够准确地跟踪它,因此基地的反导弹并没有发射。
类似的事故还有1996年6月份的阿丽亚娜火箭事件。
程序员在编程时必须定义程序用到的变量,以及这些变量所需的计算机内存,这些内存用比特位定义,一个16位的变量可以代表32,768到32,767中间的值(这个数值的由来是2151)。
而一个64位的变量可以代表?9223372036854775808到9223372036854775807中间的值。
1996年6月4日,阿丽亚娜5型运载火箭的首次发射点火后,火箭开始偏离路线,最终被逼引爆自毁,整个过程只有短短30秒。
阿丽亚娜5型运载火箭基于前一代4型火箭开发。在4型火箭系统中,对一个水平速率的测量值使用了16位的变量及内存,因为在4型火箭系统中反复验证过,这一值不会超过16位的变量,而5型火箭的开发人员简单复制了这部分程序,而没有对新火箭进行数值的验证,结果发生了致命的数值溢出。
发射后这个64位带小数点的变量被转换成16位不带小数点的变量,引发了一系列的错误,从而影响了火箭上所有的计算机和硬件,瘫痪了整个系统,因而不得不选择自毁,4亿美金变成一个巨大的烟花。
俱往矣!
感慨之余,章杉及时在系统进行了结算
说起来虽然章杉读书的速度很快,但还是用了3个小时才将这本书搞定!
“叮~宿主共读书3个小时,累计获得金钱元,累计获得经验(含2号徽章加成)”
“另外宿主共阅读43万字,累计收获43万元软妹币~”
“目前系统等级为12级,升级所需经验为7,097,,800,000”