欢迎光临散文网 会员登陆 & 注册

【科普】什么是2038年问题?是不是32位系统到了2038年就炸了?这又是一个怎

2023-01-03 12:41 作者:阳哥工作室M357  | 我要投稿

一、什么是2038年问题

2038年问题是指在使用POSIX时间的32位计算机应用程序上,格林尼治时间2038年1月19日凌晨03:14:07(北京时间:2038年1月19日中午11:14:07)之后无法正常工作。

在大部分的32位操作系统上,此“time_t”数据模式使用一个有符号32位整数(signed int32)存储计算的秒数。依照此“time_t”标准,在此格式能被表示的最后时间是第2147483647秒(代表格林尼治时间2038年1月19日凌晨03:14:07)。下一秒,即格林尼治时间2038年1月19日凌晨03:14:08,由于32位整型溢出,时间将会被“绕回”(wrap around)成一个负数,变成了第 -2147483648 秒(代表格林尼治时间1901年12月13日20:45:52),造成应用程序发生严重的时间错误,而无法运行。

二、测试结果

测试结果是一切正常;这里我给出了两种可能的猜测:

    猜测1:2038年问题只有在硬件与软件的共同作用下才会触发;如果在64位硬件上安装32位系统,那么系统与程序将不会遇到2038年问题;

    猜测2:当时在调整BIOS时间时有符号32位整数(signed int32)存储计算的秒数没有发生突变,导致2038年问题没有触发。

由于现在我们没有这两个条件:

一、真实的2038年

二、一台纯32位平台电脑(32位CPU)

所以2038年问题需要什么条件才能触发,在GMT 03:14:08 2038/1/19这一秒到来之前将会一直是一个迷;也欢迎大家在评论区上留下自己的答案。

【科普】什么是2038年问题?是不是32位系统到了2038年就炸了?这又是一个怎的评论 (共 条)

分享到微博请遵守国家法律