指由于计算机程序设计的一些问题,使得计算机在处理2000年1月1日以后的日期和时间时,可能会出现不正确的 *** 作,从而可能导致一些敏感的工业部门(比如电力,能源)和银行,政府等部门在2000年1月1日零点工作停顿甚至是发生灾难性的结果。
2000年问题在英文中通常缩写为Y2K。其中Y表示“year”也就是年,而K则表示拉丁前缀“kilo”,表示1000。Y2K也可用来指2000年。
一般来说,由于计算机程序中使用两个数字来表示年份,如1998年被表示为“98”、1999年被表示为“99”;而2000年被表示为“00”,这样将会导致某些程序在计算时得到不正确的结果,如把“00”误解为1900年。在嵌入式系统中可能存在同样的问题,这有可能导致设备停止运转或者发生更加灾难性的后果。
由于世界上各地的政府和企业都对两千年问题给予足够关注,1999年1月1日到2000年3月1日并没有出现大范围的计算机故障。
两千年问题始于1960年代,当时计算机内存和外部存储介质的成本很高,大多数数据处理需要借助穿孔卡片。
为了节省硬件成本,葛丽丝·霍普在Harvard Mark I上以6位数字来存储时间,即年、月、日各两位。这个习惯被COBOL继承下来,传播到整个计算机程序界。
当时的编程语言,如COBOL和RPG,使用ASCII和EBCDIC编码表示数据。如果用四位数字表示年份,就要多占用存储介质空间,使成本增加;因此为了节省存储空间,计算机系统的编程人员采用两位数字表示年份。
随着计算机技术的迅猛发展,存储介质的价格逐步下降,但在计算机系统中使用两位数字来表示年份的做法却由于惯性思维而被沿袭下来;对大多数程序员来说,他们并不认为所编写的软件会持续使用很多年。
问题的延续
另外,有不少人以为过了公元2000年之后,“千年虫”的问题就会自动消失。然而,若然没有对编程方式作合适的修订,问题在过了公元2000年依然会出现。以下为两个在公元2008年曾经出现的千年虫问题:
1、2008年是闰年,所以这一年有2月29日。不过,有相当数量的摩托罗拉旧款手提电话在这一天由于系统无法表示这一日,系统将电话的日期强制重置为2001年1月1日。
2、有的软件,如在现代浏览器下现已废用的JavaScript“.getYear()”函数,利用“把4位年份减去1900”的方式来获取两位年份的做法,而不是取年份的最后两位,因而会出现“不正常”的结果,例如将2021年显示为“121”。
y2k是亚文化。Y2K完整表述是Year2000Kilo,“Y2K”源于程序员中的“千年虫”问题,指在某些使用了计算机程序的智能系统(包括计算机系统、自动控制芯片等)中,由于其中的年份只使用两位十进制数来表示,因此当系统进行(或涉及到)跨世纪的日期处理运算时(如多个日期之间的计算或比较等),就会出现错误的结果,进而引发各种各样的系统功能紊乱甚至崩溃。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)