APP下载

无法到达的14分8秒

2022-06-07雷炳新

知识窗 2022年5期
关键词:千禧年位数计算机系统

雷炳新

当你打开手机系统设置,关闭自动设置时间,往未来的方向滑动时,你会发现时间停在了2037年。当你尝试将时间从2037年往后调整时,不管怎么按设置按钮,日期都不会变动。

在网上搜寻2038,你还能发现有人专门设置了倒计时网页。这其中包含了一个更加精确的时间:2038年1月19日3点14分7秒。而14分8秒永远不会到达,下一秒,你的电子设备将会显示1901年12月13日20点45分52秒。有人戏谑道:“2038年才是真正的世界末日。”

为什么会出现这种现象呢?

其实,这和我们目前广泛使用的操作系统有关。现在的手机,不管是安卓版还是苹果版,都使用的是Unix系统。这个系统的计时方式是以1970年1月1日00∶00∶00为基准,按秒为单位进行增减。比如,时间要推到2022年1月1日0点,只需要用基准值加上1640966400秒就可以了。

电子系统使用0和1储存数据,也就是二進制。如果只用1位数,只能表示0和1,如果是2位数,则可以用00、01、10、11分别表示0、1、2、3这四个数。随着位数的增加,二进制可以表示的数也越来越大,但总会遇到上限。如果用32个0、1储存数字,第一位表示符号,0代表“+”,1代表“-”,剩下31位最大可以表示2147483647。在计算机资源非常宝贵的年代,用32位来放置时间,已经很够用了。

1970年1月1日00∶00∶00+

2147483647秒=2038年1月19日3点14分7秒。下一秒,数据就会出现“装不下”的情况,发生溢出。此时,第一位符号位从0变成1,本来的加号变成了减号,时间突然穿越到过去。

其实,这种计算机系统会导致表示将来时间的问题上,计算机系统在千禧年到来时已遭遇过危机。

2000年,这种计算机系统会导致很多应用程序将这一年显示成1900年。因为硬件资源宝贵,早期程序只使用了年份的后两位数字来表示日期,而前两位数都默认为19。这个不起眼的时间设置问题,将在千禧年到来时,导致政务系统、银行系统、航空系统等多个系统都受到影响而失效。在全球科学家的努力下,这一问题终于在千禧年到来之前成功解决。

但在此之后,类似“千年虫”的事件依然时有发生。

2010年的第一周,德国约3000万张银行卡同时“失效”,持卡人不仅无法直接刷卡消费,连在自动取款机上取钱都成问题。这不仅影响了居民的生活,还导致在外度假的德国人滞留当地。后来科学家发现,由于不同编码方式存在差异,2010在德国的银行系统中被错误地识别成2016,银行卡因此“被过期”了,无法使用。同样的情况还出现在使用Windows Mobile系统的手机上,比如你在2010年第一天收到的新年短信,会被系统显示成2016年。

2013年9月,美国航天器“深度冲击”突然失联,探测任务被迫中断,其首席任务科学家迈克·埃亨认为,这是一个“千年虫问题”——航天器的部分软件无法识别2013年8月11日之后的日期,导致计算机不断重启。最终,科学家们失去了该航天器的信号。

在未来,“类千年虫”问题一定还会出现。对可以预料的问题,人们已经开始尝试新的解决方法,比如使用新的格式存储时间信息等。未雨绸缪,是智慧人生最显著的特点。46959EF9-4829-46A2-8694-6A6099C9A635

猜你喜欢

千禧年位数计算机系统
打开“流行公主”的衣橱
暑假训练营·两位数乘两位数和小数的初步认识
《两位数除以一位数笔算除法》教学设计
游园少女孙珍妮
Daisy girl
计算机系统集成管理点滴谈
计算机组成与结构课程教学的探讨与实践
计算机系统变革性研究的四个问题
比大小有窍门
叶丽娅的年龄