欢迎访问普及养生网!

普及养生

当前位置: > 人群 > 男性健康

男性健康

Java内用32位表示的最大值是什么?

2024-03-26 11:05:35男性健康
TIME的纪元时间(开始时间),至于时间回归现象相信随着64位操作系统可以表示到292,277,026,596年的12月4日14时30分08秒,这是时间已经是千亿年以后了,所以也不用担心了。在大部份的UNIX上,并没有所谓Y2K问题,不过都有2038年问题。

在Java中是用32位来表示的,所以32位可以表示的最大值是。 另外,一年365天的总秒数/=68.1,也就是说32位可以表示的最长时间是68.1,也就是说32位可以表示的最长时间是68年。 从 1970 年开始,加上 68.1 年,实际最大时间将在 2038 年 1 月 19 日 03:14:07 达到。在这个时间点之后,所有 32 位操作系统时间将变为 10,即 1901 年 20:45 2019年12月13日:52点,会出现时间倒退,很多软件运行异常。

至此我想问题的答案已经出现了,那是因为32位表示的最大时间间隔是68年,而最早的UNIX系统考虑到计算机的年龄和应用的时间限制,把1970年考虑进去了。 1 月 1 日是 UNIX TIME 的纪元时间(开始时间)。 至于时间回归现象,相信在64位操作系统下,可以表示为292,277,026,596年12月4日14:30:08。 这已经是千亿年之后的事情了什么时候世界末日,根本不用担心。

最后一个问题:在上面的.out.(new Date(0))中,打印的时间是8点而不是0点。 原因是系统时间和本地时间有问题。 其实系统时间还是0点,但是我把电脑时区设置为东8点,所以打印的结果是8点。

我想,如果把以上问题作为面试问题,会难倒很多人。

UNIX和Linux的时间系统是从“新纪元时间”纪元开始计算的,单位是秒。 纪元指定为格林威治标准时间 1970 年 1 月 1 日上午 0:00:00。

目前,大多数UNIX系统都使用32位来记录时间。 正值代表1970年之后,负值代表1970年之前。我们可以很简单地计算出它的时域:

世界末日感觉_什么时候世界末日_世界末日时代

2^31/86400(秒) = 24855.13481(天) ≈ 68.0958(年)

1970+68.0958 = 2038.0958

1970-68.0958 = 1901.9042

时间字段为[1901.9042,2038.0958]。

什么时候世界末日_世界末日感觉_世界末日时代

准确的时间是2038年1月18日星期一10点14分7秒,那一刻时间会变成负值,变成1901年12月13日黑色星期五下午3点45分52秒,杰森就会出来砸球用斧子砍你的电脑。

这就是所谓的UNIX 2038 BUG,或者你也可以戏称为Jason bug。 在大多数UNIX上,不存在所谓的Y2K问题,但存在2038问题。

在一些64位平台上,如Alpha、SGI、Sparc等,都使用64位来表示时间。

2^63/86400 ~ 1E14(天) ~ 2.92E11(年)。 那大约是2920亿年。

因此,使用 64 位的计算机可能会存在错误。 届时,位于猎户座旋臂的太阳将已经是黑矮星或暗物质,猎户座旋臂可能已被引力波破碎,银河系可能已成为一颗小型准恒星。

虽然很多人认为UNIX的2038问题会随着技术的进步逐渐被64位计算机取代,所以不必担心。 但我个人认为2038年,很多情况还是会发生。 因为事实上,当前的许多 UNIX 系统都有足够的容量服务到 2038 年什么时候世界末日,不会出现任何问题。 因此,如果你打算购买电脑主机并期望使用到那时,最好购买64位电脑,以确认只会出现末日问题(除非你想将数据传播到下一个宇宙,那么你需要购买另一台电脑)别担心)。