计算机2000年问题,又叫做"2000年病毒"、"千年虫"、"电脑千禧年问千年虫题"或"千年病毒".缩写为"Y2K".是指在某些使用了计算机程序的智能系统(包括计算机系统、自动控制芯片等)中,由 于其中的年份只使用两位十进制数来表示,因此当系统进行(或涉及到)跨世纪的日期处理运 算时(如多个日期之间的计算或比较等),就会出现错误的结果,进而引发各种各样的系统功 能紊乱甚至崩溃。

广泛地讲,“千年虫”还包括以下两个方面的问题:一个是在一 些计算机系统中,对于闰年的计算和识别出现问题,不能把2000年识别为闰年,即在该计算 机系统的日历中没有2000年2月29日这一天,而是直接由2000年2月28日过渡到了2000年3月1 日;另一个是在一些比较老的计算机系统中,在程序中使用了数字串99(或99/99等)来表示 文件结束、永久性过期、删除等一些特殊意义的自动操作,这样当1999年9月9日(或1999年4 月9日即1999年的第99天)来临时,计算机系统在处理到内容中有日期的文件时,就会遇到99 或99/99等数字串,从而将文件误认为已经过期或者将文件删除等错误操作,引发系统混乱 甚至崩溃等故障。

“千年虫”问题的根源始于60年代。当时计算机存储器的成本很高,如果用四位数字表示年 份,就要多占用存储器空间,就会使成本增加,因此为了节省存储空间,计算机系统的编程 人员采用两位数字表示年份。随着计算机技术的迅猛发展,虽然后来存储器的价格降低了, 但在计算机系统中使用两位数字来表示年份的做法却由于思维上的惯性势力而被沿袭下来, 年复一年,直到新世纪即将来临之际,大家才突然意识到用两位数字表示年份将无法正确辨 识公元2000年及其以后的年份。1997年,信息界开始拉起了“千年虫”警钟,并很快引起了全球关注。

“千年虫”解决之后,会不会有新的“虫”出现?回答是肯定的,“2038年”就是一个新的关卡。 网络时代,机会与危机共存,这也许是你我必须面对和必须付出的代价。

也许大家都已经知道计算机的2000年问题是什么概念,但是什么时候又冒出来一个2038年问题的呢? 用C语言编制的程序不会碰到2000年问题,但是会有2038年问题。这是因为,大多数C语言程序都使用到一个叫做“标准时间库”的程序库,这个时间库用 一个标准的4字节也就是32位的形式来储存时间信息。 当初设计的时候,这个4字节的时间格式把1970年1月1日凌晨0时0分0秒作为时间起点,这时的时间值为0。以后所有的时间都是从这个时间开始一秒一秒 累积得来的。 比方说如果时间已经累积到了919642718这个数值,就是说这时距离1970年1月1日凌晨0时0分0秒已经过去了919642718秒,换算一下就 应该是1999年2月21日星期天16时18分38秒。 这样计算时间的好处在于,把任意两个时间值相减之后,就可以很迅速地得到这两个时间之间相差的秒数,然后你可以利用别的程序把它换算成明白易懂的年月日时 分秒的形式。

要是你曾经读过一点儿关于计算机方面的书,你就会知道一个4字节也就是32位的存储空间的最大值是2147483647,请注意!2038年问题的关键也 就在这里———当时间一秒一秒地跳完2147483647那惊心动魄的最后一秒后,你猜怎么样? 答案是,它就会转为负数也就是说时间无效。那一刻的准确的时间为2038年1月18日星期一晚上10时14分7秒,之后所有用到这种“标准时间库”的C语 言程序都会碰到时间计算上的麻烦。 这就是2038年问题。 但是大家也不用太过紧张。2038年问题比Y2K的问题解决起来相对要容易一些,只要给那些程序换一个新版本的“标准时间库”就可以了,比如说,改用8字 节64位的形式来存储时间。这样做并不怎么费事,因为在C程序中“标准时间库”是相对独立的一个部分,里面的时间表达都有自己的一套时间类型和参数(而在 碰到Y2K的那些大型主机中,时间格式大都没有统一)。 说到这里,一些冰雪聪明的菜鸟DDMM们应该可以联想到,WindowsNT用的是64位操作平台,它的开始时间是1601年1月1日———但是它每过 1个纳秒就跳一下,因此,WindowsNT它会碰到的是2184年问题……

而最早出现的UNIX系统考虑到计算机产生的年代个应用的时限,综合取了1970年1月1日作为UNIX TIME的纪元时间(开始时间),至于时间回归现象相信随着64位操作系统可以表示到292,277,026,596年的12月4日14时30分08秒,例如DigitalAlpha、SGI、Sparc等一些64位系统,想要看到它们的时间出错你得等到天荒地老———那大概是 292亿年。到那时,位于猎户座旋臂的太阳系,已经是黑矮星或暗黑物质,猎户座旋臂已经被重力波震断,银河系大概则已经变成小型似星体了。 所以,给那些准备攒机的菜鸟DD一个建议,除非您想要把资料流传给下一个宇宙,一台64位的电脑已经足够。

计算机系统千年虫问题相关推荐

  1. “千年虫”,计算机的巨大BUG!

    作者:十三侃娱乐 说起来,现在社会科技中,除了真正学过计算机专业的人,大部分人对于"千年虫"这个称号都有些陌生,甚至有些人连听都没听过,不知道的网友听到"虫"这 ...

  2. Facebook用户遭遇千年虫:瞬间有了46年老友

    一些Facebook用户今天碰到了一个有趣的bug,系统提示他们与好友有了46年长的好友关系.要知道,Facebook还不到15岁,很多用户也没有46岁的高龄.Facebook一直没有透露产生这个bu ...

  3. 千年虫与2038年问题

      1999年12月31日的夜晚,人类即将迎接第二个千禧之年的到来,大家喜气洋洋地等待新年钟声的敲响.然而有那么一批人此时此刻却紧张不已,因为过了十二点钟,世界各地的政府和金融系统可能会在一瞬间崩溃. ...

  4. 照这样下去,“千年虫”还得再来十遍

    在21年前世纪之交,全球的计算机系统和互联网曾经出过一个重大事件:千年虫. 当时的计算机系统处理年份的方式都是两位数(如1998年会被系统缩略成98),而2000年在老系统里仍然以00显示,则会被系统 ...

  5. 千年虫病毒是不是计算机病毒,求助,千年虫是病毒吗?

    满意答案 mjgbpt 2012.12.04 采纳率:56%    等级:2 已帮助:27488人 ""千年虫"问题的根源始于60年代.当时计算机存储器的成本很高,假如用 ...

  6. 千年虫”是什么东西?一个在计算机诞生之初,遗留下的巨大BUG

    说起来,现在社会科技中,除了真正学过计算机专业的人,大部分人对于"千年虫"这个称号都有些陌生,甚至有些人连听都没听过,不知道的网友听到"虫"这个字可能还会脑补出 ...

  7. 浏览器版本破百,“千年虫”问题再现?

    不知道有多少人还记得,在时间即将跨入 2000 年的时候,计算机领域曾发生过著名的"千年虫"问题. "千年虫"不是病毒.也不是什么神奇生物,它只是计算机系统由于 ...

  8. 【历史上的今天】12 月 31 日:千年虫问题;DNA 计算之父出生;微机先驱 Cromemco 成立

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2021 年 12 月 31 日,也是 2021 年的最后一天.在 1993 年的今天,我国第一张电子报纸在杭州问 ...

  9. “千年虫问题”、“2038年问题”、什么是闰年

    (1)先温习一下什么是闰年(Leap Year) 闰年是公历中的名词.闰年分为普通闰年和世纪闰年. 普通闰年:能被4整除但不能被100整除的年份为普通闰年.(如2004年就是闰年,1999年不是闰年) ...

最新文章

  1. 修改FileZilla生成证书的有效期
  2. linux 进程间通信 dbus-glib【实例】详解四(上) C库 dbus-glib 使用(附代码)(编写接口描述文件.xml,dbus-binding-tool工具生成绑定文件)(列集散集函数)
  3. 怎样cp文件夹时忽略指定的文件夹和文件
  4. 安装oracle 12c 还用装11g_oracle12c-RAC安装部署之GRID安装
  5. 《每日一题》842. Split Array into Fibonacci Sequence 将数组拆分成斐波那契序列
  6. struct ethhdr结构体详解
  7. Eclipse的maven插件最新地址
  8. 入职必备两小时入门SVN(二)
  9. html5中如何使图片滚动条,如何使RMarkdown代码块中出现垂直滚动条(html视图)
  10. 化工企业数据分析平台项目之应收款分析
  11. 代码文档生成工具-Doxygen生成CHM和RTF图文教程
  12. Linux下使用exec命令将文件与文件描述符关联
  13. SpringBoot 一个依赖搞定 session 共享,没有比这更简单的方案了!
  14. Android解析ClassLoader(二)Android中的ClassLoader
  15. 跟着辛星认识一下PHP的自己主动载入
  16. CentOS6.5 安装Tomcat6
  17. iOS8定位问题解决方案
  18. [Intensive Reading]图像生成:SaGAN
  19. 15数字华容道解法 图解_数字华容道最后一行技巧数字华容道教学步骤
  20. 上海计算机协会-10月月赛-丙组-T5-组队竞赛

热门文章

  1. matlab利用magnify作图
  2. 开发常用linux命令
  3. htcvive怎么输入_HTC Vive如何播放视频 3种方法教你用Vive播放VR视频
  4. SuperMap iClient3D for WebGL教程- 淹没分析
  5. linux vdso(Virtual Dynamically-linked Shared Object)内核态的调用映射到用户态的地址空间开销更小
  6. Java基础学习笔记(十九)—— 多线程(1)
  7. 音频-ffmpeg音频格式转换
  8. GB/T28181协议视频平台EasyGBS视频快照优化,减少服务器性能消耗
  9. Windows 消息机制浅析
  10. 局域网控制软件的选择成为局域网是否安全的衡量标准