世界末日到底是哪一天?这个无厘头的问题一直有着各种各样的离奇答案。当你打开手机系统设置(不是日历),关闭自动设置时间,往未来的方向滑动数字时,你会发现时间停在了 2038 年。
小米、华为可以设置到 2037 年 12 月 31 日,iPhone 也只多两天
不仅是手机,在电脑上,当你尝试将时间从 2037 年再往上调整时,会发现不管怎么按设置按钮,日期都不会继续改变。
日期调整超过 2038 年时,会停在 2038 年 1 月 1 日
2038 年到底会发生什么?为什么各种设备都无法“逾越”2038 年?在网上搜寻 2038,你还能发现有人专门设置了倒计时网页。这其中包含了一个更加精确的时间:2038 年 1 月 19 日 3 点 14 分 7 秒。而下一秒,你的电子设备将会穿越回到 1901 年。
著名的“2038 问题”,将在此刻爆发。
到“2038 年问题”发生,还剩……
问题发生在 2038 年 1 月 19 日 3 点 14 分 7 秒的下一秒。这一天的 03:14:08 不会到来,迎接你的将会是 1901 年 12 月 13 日 20:45:52。
使用脚本模拟系统时间,会出现时间的跳变(平台 Debian GNU / Linux (内核 2.4.22))丨 William Porquet / deepsky.com
对于很多电子设备而言,这是个毁灭性的打击。文件的创建与修改、应用软件的运行、网络系统的同步…… 时间作为一个关键数值,在整个电子系统里起着绝对重要的作用。因此有一阵子苹果手机的语音助手 Siri,还把这一天当成了“世界末日”。为什么是这一天?Siri 回答中的关键词也给出了答案。
早期 Siri 对于世界末日问题的回答(新版本系统已无此回答)
Unix、32 位,这两个词让 2038 年的这一天注定成为末日。Unix 是一种操作系统,这种系统中计时方式是以 1970 年 1 月 1 日 00:00:00 为基准,按秒为单位进行增减。比如到 2022 年 1 月 1 日 0 点,只需要用基准值加上 1640966400 秒。而我们现在使用的安卓、苹果系统都属于类 Unix 系统,采用了同样的方案。
电子系统使用 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,本来的加号变成了减号,时间突然穿越到过去。
从上到下分别是二进制秒数、对应的十进制秒数、32 位 Unix 系统时间、实际时间。超过 2147483647 后,符号位会变成 1(负号),整个数字会突然发生翻转,回到 1901 年。丨 Pemu / Wikicommons
这个存在于将来的问题,它会给我们带来怎样的影响?回溯过往,一次又一次的“千年虫”问题已经给了我们一些预告。
2000 年,千禧年。而在很多应用程序看来,这一年会变成 1900 年。
同样因为硬件资源宝贵,早期程序使用了年份的后两位数字来表示日期,而前两位数都默认为 19。这个不起眼的时间问题,在整个世界引发了巨大的关注。政务系统、银行系统、航空系统等多个系统都可能受到影响而失效。全球各地对这一问题进行了响应,试图解决这一问题。我国多次发文强调这一问题的重要性。美国也推出了有关千年虫问题的法案,以敦促各行业共享信息解决此类问题。
多亏人们对“千年虫”的高度重视,使得这一问题在集中爆发前得以解决。但在此之后,类似“千年虫”的事件却依然层出不穷。
2010 年的第一周,德国约 3 千万张银行卡同时“失效”。持卡人不仅无法直接刷卡消费,连在自动取款机上取钱都成问题。这不仅影响了本国居民的生活,也使得在外度假的德国人滞留在当地。
由于不同编码方式存在差异,2010 在德国的银行系统中被错误地识别成 2016。银行卡也因此“被过期”了。同样的情况出现在使用 Windows Mobile 系统的手机上:你在 2010 年第一天收到的新年短信,会被系统显示成 2016 年。
德国加速修复了银行系统,所幸没有造成更大的损失。但放眼太空,事情就没那么简单了。2013 年 9 月,航天器 Deep Impact 突然失联,迫使美国航空航天局宣布相关探测任务正式结束。Deep Impact 的首席任务科学家 Mike A'Hearn 认为,这是一个“千年虫问题”。航天器的部分软件无法正确识别 2013 年 8 月 11 日之后的日期,导致计算机不断重启。最终,科学家们失去了航天器的信号。
Deep Impact 与坦普尔 1 号彗星相遇模拟图丨 NASA
就在今年年初,“2022 年虫”让微软的程序员体会了新年大加班。1 月 1 日,微软的邮件服务系统 Exchange 突然中断,使用该服务的用户都无法发送电子邮件。微软随后给出了声明,称该问题与日期检查失败以及新年的变化有关。简单点说,和 2038 问题一样,时间“溢出”了。好在微软团队加班加点,在当天解决了该问题。
在未来,“类千年虫”问题一定还会出现。对于可以预料的问题,人们已经开始尝试提供解决方法。比如使用新的格式存储时间信息。与此同时,系统团队提供的新内核也在解决 32 位平台上的“历史问题”。你也不用太担心,毕竟到那时,你应该已经换了好几波手机了。
不过,再遇到类似的突发 Bug 也很正常。因为世界上总在发生情理之中、意料之外的事情。
资讯阅读 18.78MB 9.7分
手机日期只能设置到 2038 年?这背后有个大问题……
世界末日到底是哪一天?这个无厘头的问题一直有着各种各样的离奇答案。当你打开手机系统设置(不是日历),关闭自动设置时间,往未来的方向滑动数字时,你会发现时间停在了 2038 年。
小米、华为可以设置到 2037 年 12 月 31 日,iPhone 也只多两天
不仅是手机,在电脑上,当你尝试将时间从 2037 年再往上调整时,会发现不管怎么按设置按钮,日期都不会继续改变。
日期调整超过 2038 年时,会停在 2038 年 1 月 1 日
2038 年到底会发生什么?为什么各种设备都无法“逾越”2038 年?在网上搜寻 2038,你还能发现有人专门设置了倒计时网页。这其中包含了一个更加精确的时间:2038 年 1 月 19 日 3 点 14 分 7 秒。而下一秒,你的电子设备将会穿越回到 1901 年。
著名的“2038 问题”,将在此刻爆发。
到“2038 年问题”发生,还剩……
2038 年,时间“摧毁”系统
问题发生在 2038 年 1 月 19 日 3 点 14 分 7 秒的下一秒。这一天的 03:14:08 不会到来,迎接你的将会是 1901 年 12 月 13 日 20:45:52。
使用脚本模拟系统时间,会出现时间的跳变(平台 Debian GNU / Linux (内核 2.4.22))丨 William Porquet / deepsky.com
对于很多电子设备而言,这是个毁灭性的打击。文件的创建与修改、应用软件的运行、网络系统的同步…… 时间作为一个关键数值,在整个电子系统里起着绝对重要的作用。因此有一阵子苹果手机的语音助手 Siri,还把这一天当成了“世界末日”。为什么是这一天?Siri 回答中的关键词也给出了答案。
早期 Siri 对于世界末日问题的回答(新版本系统已无此回答)
Unix、32 位,这两个词让 2038 年的这一天注定成为末日。Unix 是一种操作系统,这种系统中计时方式是以 1970 年 1 月 1 日 00:00:00 为基准,按秒为单位进行增减。比如到 2022 年 1 月 1 日 0 点,只需要用基准值加上 1640966400 秒。而我们现在使用的安卓、苹果系统都属于类 Unix 系统,采用了同样的方案。
电子系统使用 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,本来的加号变成了减号,时间突然穿越到过去。
从上到下分别是二进制秒数、对应的十进制秒数、32 位 Unix 系统时间、实际时间。超过 2147483647 后,符号位会变成 1(负号),整个数字会突然发生翻转,回到 1901 年。丨 Pemu / Wikicommons
这个存在于将来的问题,它会给我们带来怎样的影响?回溯过往,一次又一次的“千年虫”问题已经给了我们一些预告。
千年之外的千年虫
2000 年,千禧年。而在很多应用程序看来,这一年会变成 1900 年。
同样因为硬件资源宝贵,早期程序使用了年份的后两位数字来表示日期,而前两位数都默认为 19。这个不起眼的时间问题,在整个世界引发了巨大的关注。政务系统、银行系统、航空系统等多个系统都可能受到影响而失效。全球各地对这一问题进行了响应,试图解决这一问题。我国多次发文强调这一问题的重要性。美国也推出了有关千年虫问题的法案,以敦促各行业共享信息解决此类问题。
多亏人们对“千年虫”的高度重视,使得这一问题在集中爆发前得以解决。但在此之后,类似“千年虫”的事件却依然层出不穷。
2010 年的第一周,德国约 3 千万张银行卡同时“失效”。持卡人不仅无法直接刷卡消费,连在自动取款机上取钱都成问题。这不仅影响了本国居民的生活,也使得在外度假的德国人滞留在当地。
由于不同编码方式存在差异,2010 在德国的银行系统中被错误地识别成 2016。银行卡也因此“被过期”了。同样的情况出现在使用 Windows Mobile 系统的手机上:你在 2010 年第一天收到的新年短信,会被系统显示成 2016 年。
德国加速修复了银行系统,所幸没有造成更大的损失。但放眼太空,事情就没那么简单了。2013 年 9 月,航天器 Deep Impact 突然失联,迫使美国航空航天局宣布相关探测任务正式结束。Deep Impact 的首席任务科学家 Mike A'Hearn 认为,这是一个“千年虫问题”。航天器的部分软件无法正确识别 2013 年 8 月 11 日之后的日期,导致计算机不断重启。最终,科学家们失去了航天器的信号。
Deep Impact 与坦普尔 1 号彗星相遇模拟图丨 NASA
就在今年年初,“2022 年虫”让微软的程序员体会了新年大加班。1 月 1 日,微软的邮件服务系统 Exchange 突然中断,使用该服务的用户都无法发送电子邮件。微软随后给出了声明,称该问题与日期检查失败以及新年的变化有关。简单点说,和 2038 问题一样,时间“溢出”了。好在微软团队加班加点,在当天解决了该问题。
在未来,“类千年虫”问题一定还会出现。对于可以预料的问题,人们已经开始尝试提供解决方法。比如使用新的格式存储时间信息。与此同时,系统团队提供的新内核也在解决 32 位平台上的“历史问题”。你也不用太担心,毕竟到那时,你应该已经换了好几波手机了。
不过,再遇到类似的突发 Bug 也很正常。因为世界上总在发生情理之中、意料之外的事情。
资讯阅读 18.78MB 9.7分
-
任天堂股价在 Switch 销售预期下调后暴跌 更新时间:2022-11-09 -
《潜水员戴夫》开发商新作《纳克园:最后的乐园》24 分钟实机演示公布,11 月 29 日开测 更新时间:2023-11-21 -
二次元恋爱战斗游戏《永夜》今日正式登陆 PC、PS5、PS4 平台,支持中文 更新时间:2023-09-13 -
Vault Edition 版《使命召唤:现代战争 3》游戏细节曝光 更新时间:2023-08-17
查看更多文章 >