2038 年问题:修订间差异

跳转到导航 跳转到搜索
添加41字节 、​ 2026 年 1 月 2 日 (星期五)
 
第 15 行: 第 15 行:


要解决这个问题,最简单的方式是扩展 Unix 时间的长度,用 64 位数字来表示。64 位运算器使用 64 位二进制数记录,除去表示正负的符号位,它的实际可用位数是 63 位{{efn|在包括正负号在内的情况下,64 位整数的十进制范围是 {{code|-9223372036854775808}}~{{code|+9223372036854775807}},绝对值可用值总数为 2<sup>64</sup>,即 {{code|18446744073709551616}}({{code|0}} 也单独计算为一个数,若不包括则为 {{code|18446744073709551615}},即 2<sup>64</sup>-1)}},最大表示到公历的协调世界时(UTC)时间 292277026596 年 12 月 4 日 15 时 30 分 08 秒({{code|+9223372036854775807}}),此时已经是大约 2922 亿年后了。当然,理想的情况是到 2038 年时,64 位系统已经成为主流,从而避免特意去修正这个问题所需要的大量开销。否则,人们就必须把新的 64 位时间拆分成两部分并分别保存在两个变量里,这是一个麻烦而且效率低下的选择。
要解决这个问题,最简单的方式是扩展 Unix 时间的长度,用 64 位数字来表示。64 位运算器使用 64 位二进制数记录,除去表示正负的符号位,它的实际可用位数是 63 位{{efn|在包括正负号在内的情况下,64 位整数的十进制范围是 {{code|-9223372036854775808}}~{{code|+9223372036854775807}},绝对值可用值总数为 2<sup>64</sup>,即 {{code|18446744073709551616}}({{code|0}} 也单独计算为一个数,若不包括则为 {{code|18446744073709551615}},即 2<sup>64</sup>-1)}},最大表示到公历的协调世界时(UTC)时间 292277026596 年 12 月 4 日 15 时 30 分 08 秒({{code|+9223372036854775807}}),此时已经是大约 2922 亿年后了。当然,理想的情况是到 2038 年时,64 位系统已经成为主流,从而避免特意去修正这个问题所需要的大量开销。否则,人们就必须把新的 64 位时间拆分成两部分并分别保存在两个变量里,这是一个麻烦而且效率低下的选择。
== 另行参阅 ==
* [[2000 年问题]]


== 注 ==
== 注 ==

导航菜单