计算机2000年问题又称“2000年病毒”、“千年虫”、“计算机千禧年问题千年虫题”或“千年病毒”。 简称“Y2K”。 在使用计算机程序的一些智能系统(包括计算机系统、自动控制芯片等)中,其中的年份用两位十进制表示,因此系统被执行
广泛而言,“千年虫”还包括以下两个方面的问题。 一是在一些计算机系统中,闰年的计算和识别存在问题,不能将2000年识别为闰年。 即该计算机系统的日历上没有2000年2月29日这一天,而是从2000年2月28日直接转移到2000年3月1日。 另一种类型的计算机系统在程序中使用数字串99 (或99/99等)表示特殊含义的自动操作,如文件退出、永久过期和删除,即1999年9月9日)或1999年4月9日
“千年虫”问题的根源始于60年代。 当时,计算机存储的成本很高,如果用4位数字表示年份,就会占用很多存储空间,增加成本,所以为了节约存储空间,计算机系统的程序员用2位数字表示年份。 随着计算机技术的飞速发展,后来内存的价格下降了,但在计算机系统中,用两位数字表示年份的做法由于思维上的惯性力而沿袭下来,随着年龄的增长,到了新世纪的临近,突然,用两位数字表示年份的话,到了公元2000年以后1997年,情报界开始敲响“千年虫”的警钟,很快引起了世界的关注。
“千年虫”解决后,会不会出现新的“虫”? 答案是肯定的。 “2038年”是一个新的关卡。 网络时代,机遇与危机并存。 这可能是你和我必须面对的代价。
人们可能已经知道计算机2000年问题是什么概念,什么时候又出现了2038年问题呢? 用c语言编写的程序不会遇到2000年的问题,但有2038年的问题。 这是因为大多数c语言程序使用一个称为“标准时间库”的库,该库以标准4字节(即32位)的形式存储时间信息。 最初,这4字节的时间格式以1970年1月1日凌晨0时0分0秒为时间起点,此时的时间值为0。 接下来的所有时间都从这个时间开始积累1秒1秒。 例如,如果时间累计到919642718,则时间从1970年1月1日午夜0分0秒到919642718秒,换算为1999年2月21日星期日16时18分38秒。 这样计算时间的优点是,减去任意两个时间值,很快就会得到这两个时间之差的秒数。 然后,可以用别的程序将其换算成容易理解的年月日时分秒的形式。
如果你读过一点计算机书,你会发现4字节即32位存储的最大值是2147483647。 请注意。 2038年问题的关键也是这里———。 在1秒1秒地跳了2147483647惊险的最后一秒后,你觉得呢? 答案是负数。 也就是说,时间无效。 那一刻的准确时间是2038年1月18日星期一晚上10点14分7秒,之后所有使用这种“标准时间库”的c语言程序都将面临时间计算上的麻烦。 这就是2038年问题。 但是大家也不用太紧张。 2038年的问题比Y2K的问题更容易解决。 用那些程序更换新版本的“标准时间库”就可以了。 例如,更改为8字节64位格式以保存时间。 这不太费事,因为“标准时间库”在c程序中是相对独立的一部分,其中的时间表示有自己的一组时间类型和参数。 另一方面,遇到Y2K的大型主机往往时间格式不统一。 现在,冰雪聪明的专用DDMM应该可以联想到,WindowsNT使用的是64位平台,起始时间为1601年1月1日———。 但是,因为每纳秒跳一次,所以WindowsNT面临的是2184年的问题……
考虑到计算机出生年代的APP应用期限,最初出现的UNIX系统综合取1970年1月1日作为UNIX TIME的纪元时间(开始时间)。 关于时间回归现象,在相信可以与64位操作系统一起显示在292,277,026,596年的12月4日14时30分08秒(例如DigitalAlpha、SGI、Sparc等)的那个时候,猎户臂上的太阳系所以,我会建议私人DD,只要不尝试将数据传递到下一个宇宙,64位电脑就足够了。