2038 年问题:修订间差异
跳转到导航
跳转到搜索
→修复方法
正义羊-JRJSheep(讨论 | 贡献) (→修复方法) |
正义羊-JRJSheep(讨论 | 贡献) (→修复方法) |
||
| 第 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 年问题]] | |||
== 注 == | == 注 == | ||