首页 小组 问答 话题 好文 素材 用户 唠叨 我的社区

[交流]【科普】什么是2038年问题?是不是32位系统到了2038年就炸了?

天启Lv.1普通用户
2024-08-15 11:37:12
0
168

一、什么是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这一秒到来之前将会一直是一个迷;也欢迎大家在评论区上留下自己的答案。

天启
天启

68 天前

签名 : 大运河向南是我家   168       0
评论
站长交流