zoukankan      html  css  js  c++  java
  • 【转】计算机中时间的表示和存储

    为什么计算机的计时是从1970年1月1日00:00:00开始的呢?

           以前的Unix计算机中存储时间,是以32位来存储的。因为用32位来表示时间的最大间隔是68年,而最早出现的UNIX操作系统考虑到计算机产生的年代和应用的时限综合取了1970年1月1日作为UNIX TIME的纪元时间(开始时间),将1970年作为中间点,向左向右偏移都可以照顾到更早或者更后的时间,因此将1970年1月1日0点作为计算机表示时间的原点,从1970年1月1日开始经过的秒数存储为一个32位整数。以后计算时间就把这个时间(1970年1月1日00:00:00)当做时间的零点。这种高效简洁的时间表示法,就被称为"Unix时间纪元"。

    为什么现在的计算机的时间是以64位来存储时间的?

        因为32位的UNIX系统会以32位二进制数字表示时间,它们最多只能表示至协调世界时间2038年1月19日3时14分07秒(二进制:01111111 11111111 11111111 11111111),在下一秒二进制数字会是10000000 00000000 00000000 00000000,这是负数,因此各系统会把时间误解作1901年12月13日20时45分52秒(亦有说回归到1970年)。这时可能会令软件发生问题,导致系统瘫痪。这是著名的Unix 2038 bug(Jason hatchet bug)。

        后来的解决方案就是,计算机表示时间使用了64位来代替32位。在64位系统下,此时间最多可以表示到292,277,026,596年12月4日15时30分08秒。这个时间就可以非常长了,在目前的人类生活时间中,远远够用了。

  • 相关阅读:
    数组循环的各种方法的区别
    数组里面findIndex和indexOf的区别
    选择器的绑定
    把dialog对话框设置成组件的形式
    css font-family字体及各大主流网站对比
    记一下公司的备注怎么写
    可删
    瑞萨电子:嵌入式终端与人工智能融合改变工业格局
    linux有什么作用
    Linux有哪些特点
  • 原文地址:https://www.cnblogs.com/lulipro/p/5211474.html
Copyright © 2011-2022 走看看