解决计算机“千年问题”的方法

文档序号:6569427阅读:315来源:国知局
专利名称:解决计算机“千年问题”的方法
技术领域
本发明提供了一种解决计算机“千年问题”的方法,该方法仍只采用两位数表示年份,对目前的计算机来说日期域易达K×4162亿年,最大则可达K×3.4亿亿亿亿亿年(K为一较大的正整数)。
在二十世纪计算机发明初期,设计人员为了节约宝贵的内存,仅用两位数表示年份,世纪数默认为19,这样,随着2000年的到来,计算机会把“00”当作1900年,从而引起一系列与日期有关的处理错误,引发各种各样的计算机业务处理系统和控制系统的功能紊乱。届时,“千年问题”将在信息、金融、电讯、军事、交通以及与网络有关的各行各业捣乱,它的连锁反应将给人类带来巨大的经济损失,甚至给国家安全带来隐患。据估计,“千年问题”给全球造成的损失将超过6000亿美元。
目前常用的修改日期的方法有扩增法、滑动窗口法、日期操纵法、月份加计法。以上方法有如下缺点一、四种方法表示的日期范围都很有限,月份加计法只能将2000年问题往后延迟7年,日期操纵法也至多推后几十年,滑动窗口法的窗口大小小于100年,扩增法用四位数表示公元纪年,虽然长一些,但也只能用到公元9999年,公元10000年来临时又会产生“万年问题”。二、后三种方法未解决“00”和“99”问题。在很多系统中,字符串“00”和“99”被赋予了特殊的含义,如存档、特殊处理甚至档案删除等,后三种方法未采取有效措施来防止“00”和“99”问题。三、扩增法、日期操纵法、月份加计法都有不符合人们习惯的方面。扩增法用四位数表示年份不符合人们用两位数表示年份的习惯,日期操纵法、月份加计法虽然用两位数表示年份,但又和实际的不一致。
本发明的目的是提供一种在目前条件下日期域能达到4000亿年且能解决“00”和“99”问题的方法。
本发明的目的是这样实现的。
仍只采用两位数表示年份,但对表示年份的两位数字的背景色及前景色作单独定义,不被整个屏幕的颜色覆盖,本发明的实质就在于世纪数通过两位年份数字的前景标准色与背景色表达出来。若色深为m位(m为一正整数),将表示颜色的m位二进制数表示的整数对应的十进制整数定义为颜色的灰度。设计算机能表示N种颜色(N为正整数,N=2m),这N种颜色的灰度为0(黑色)、1、2、3、......、(N-2)、(N-1)(白色)。取灰度为1~(N-2)的颜色为标准色,标准色既参与显示,又参与计算;取灰度为0、(N-1)的两种颜色为增强色,增强色参与显示,但不参与计算。每个年份数字的前景色由标准色与增强色两种颜色组成。标准显示表示的数字中标准色占绝大部分,增强色占一小部分,标准显示用于肉眼能清楚分辨前景标准色与背景色时;当前景标准色与背景色比较接近而肉眼不易分辨时,用增强显示,增强显示的数字中增强色占绝大部分,标准色占一小部分。增强显示与对应的标准显示所表示的同一个数字的相同部分的颜色刚好对调,增强显示时所计算得的世纪数与对应的标准显示时的完全相同。增强色为黑色的标准显示方式记为标准显示(黑),增强色为白色的标准显示方式记为标准显示(白);增强色为黑色的增强显示方式记为黑色增强显示,增强色为白色的增强显示方式记为白色增强显示。标准显示和增强显示的数字中标准色和增强色的块数、块的大小、分布有多种组合,可以有K种组合(K为一较大的正整数),组合序数记为J(J为整数,且0≤J≤K-1)。
可按以下方法来定义J的大小把年份数字所在点阵的上下对称线定义为基线。标准显示中的增强色或增强显示中的标准色的块以点阵行为单位,把最上块的中心线与最下块的中心线的对称线定义为第一中心线;把最上块与最下块去除后所剩部分的最上块、最下块的中心线的对称线定义为第二中心线,可按同样的方法定义第三中心线、第四中心线......按以下优先顺序来定义J的大小(1)按块数由小到大的顺序,块数相同时按块的总行数由小到大的顺序,块数和块的总行数都相同时按从上到下的块的行数从左到右排列所组成的整数从小到大的顺序来定义。例如块的总行数最多为4时仍能清楚辨认数字的话,可按1、2、3、4、(1+1)、(1+2)、(2+1)、(1+3)、(3+1)、(1+1+1)、(1+1+2)、(1+2+1)、(2+1+1)、(1+1+1+1)行的顺序来定义。(2)当(1)中的情况相同时,按最上块与最下块之间的距离即第一中心线对应的两块之间的距离D1由小到大的顺序,D1相同时按第二中心线对应的两块之间的距离D2由小到大的顺序,D1、D2都相同时按第三中心线对应的两块之间的距离D3由小到大的顺序,依此类推。(3)当(1)、(2)中的情况都相同时,按第一中心线到基线的距离d1由小到大的顺序,d1相同时按第二中心线到第一中心线的距离d2由小到大的顺序,d1、d2都相同时按第三中心线到第二中心线的距离d3由小到大的顺序,依此类推。(4)当(1)、(2)、(3)中的情况都相同时,按第一中心线对基线的位置先上后下的顺序,第一中心线对基线的位置相同时按第二中心线对第一中心线的位置先上后下的顺序,第一中心线对基线的位置和第二中心线对第一中心线的位置都相同时按第三中心线对第二中心线的位置先上后下的顺序,依此类推。(如果后一线对前一线的位置存在重合的情形,则应按先重合再上后下的顺序)。以上顺序总的原则是块由小到大、块对基线由密集到分散、由尽可能对称到不对称。按以上顺序将J定义为0、1、2、3、......(K-1)。设数字所在的点阵有n行,块的总行数最多为P时仍能清楚辨认0~9的各数字,则K=Cn1+Cn2+Cn3+......+Cnp。
设A为世纪数(将公元纪年最后两位年份数去掉后所得的整数,A的基数为19,即A≥19)、年份个位数背景色灰度为F、年份十位数背景色灰度为G、年份个位数前景标准色灰度为H、年份十位数前景标准色灰度为I。
根据世纪数计算年份数前景标准色和背景色的灰度及组合序数的方法如下令B=A-19
C=INT(B/(N-2)) (INT()函数为取整函数,下同。)D=INT(B/(N-2)2)E=INT(B/(N-2)3)J=INT(B/(N-2)4)则F=B+1-(N-2)*CG=INT((B-(N-2)2*D)/(N-2))+1H=INT((B-(N-2)3*E)/(N-2)2)+1I=INT((B-(N-2)4*J)/(N-2)3)+1根据年份数前景标准色与背景色的灰度及组合序数计算世纪数的方法如下B=J*(N-2)4+(I-1)*(N-2)3+(H-1)*(N-2)2+(G-1)*(N-2)+F-1A=B+19由以上知Bmin=0,Bmax=K(N-2)4-1,故本方法表示的年数长达K(N-2)4×100年。目前计算机普遍能表示256种颜色,则用该法能表示的年数长达K×(256-2)4×100=K×4162亿年,目前计算机最多能表示232种颜色,则用该法能表示的年数长达K×(232-2)4×100=K×3.4×1040年,即K×3.4亿亿亿亿乙年。
软件中还应包括以下内容计算机应能自动识别日期,当计算机时钟日期年份最后两位数由“99”变为“00”时,A自动加1(A的基数为19),这样,新世纪日期中的年份位置会自动生成对应灰度的背景色,并显示相应灰度的数字或为显示相应灰度的数字做好准备。还应包括手动定义和重新设置的方法及取消对世纪数的定义的方法。手动定义的方法为将光标移到年份数位置处,左点一下鼠标,则出现如下对话框
填入世纪数回车后,计算机自动计算并填入组合序数、年份个、十位数的背景色与前景标准色的灰度,计算机会计算并自动选择增强显示方式。计算机分别计算年份个、十位数的背景色各基色灰度之和L,并与各基色灰度最大值之和M的一半进行比较,若L≤M/2,则对应的数字为白色增强显示;若L>M/2,则对应的数字为黑色增强显示,被计算机选中的显示方式将高亮度显示。单击确定按钮后对话框消失,接着可输入两位年份数。显示方式也可人为改变。在设置时,可以单击鼠标选择其它显示方式中的一种,被选中的显示方式将高亮度显示,单击确定按钮后输入两位年份数,若年份数字与背景色肉眼能清楚区分,则该显示方式可以使用;若年份数字与背景色肉眼不易区分,则该显示方式不能使用。若其它显示方式都不能使用,则只能使用计算机自动选择的增强显示方式。以上定义对以后的日期一直有效,直到重新设置或取消。重新设置的方法为将光标移到年份数位置处,左点一下鼠标,出现上述对话框后,再单击重新设置按钮,对话框变为空表格,以后的设置方法与最初设置时相同。重新设置后对以后的日期一直有效,直到再重新设置或取消。取消定义的方法为将光标移到年份数位置处,左点一下鼠标,出现上述对话框后再单击取消按钮(单击取消按钮后对话框消失)。取消定义后该处的年份数为普通显示方式,即背景色、前景色与屏幕一致,前景色只有一种。软件应能识别年份数的背景色、前景标准色、增强色、组合序数,在计算、比较等需要世纪数处,应有转换程序,自动按前述方法将背景色、前景标准色灰度及组合序数代入公式计算出世纪数从而计算出公元纪年。还可查询世纪数,将光标移到要查询的年份数位置处,左点一下鼠标,便出现上述对话框,其中世纪数、组合序数、年份个、十位数的背景色、前景标准色的灰度都已填好,单击确定按钮后对话框消失。
防止“00”和“99”问题的方法在软件中设有测定数字前景色的程序,若前景色不止一种,则不执行系统赋予“00”和“99”的特殊功能,由于日期中每个年份数字的前景色都由标准色和增强色两种颜色表示,故不会因日期中的“00”和“99”而产生误操作。注意在修改已有数据或新建数据时,应将赋予了特殊含义的“00”和“99”表示成普通显示方式,即使它们有日期格式的形式也应表示成普通显示方式,若已表示成年份数的标准色与增强色共同显示的方式,应用前述方法取消对它们的定义,使它们恢复成普通显示方式。
由于本方法用两位数实际上已把整个公元纪年都表示出来了,闰年问题也就自然解决了,程序在算出公元纪年后做如下判断若最后两位数都是0且能被400整除,则该年份是闰年,若最后两位数不都是0且能被4整除,则该年份是闰年,否则不是闰年。
对于用四位数表示年份的应用程序,应作如下修改当存贮或向外传递与日期有关的信息时应将年份转换成用本方法表示的两位数,当调用或接收与日期有关的信息时应将用本方法表示的两位年份数转换成对应的四位数。这样修改后用四位数表示年份的应用程序与根据本方法作了相应修改的用两位数表示年份的应用程序同时使用时的兼容问题也就解决了。
根据本方法对软件作相应修改一般便能解决“千年问题”,必要时还可根据本方法对硬件作相应修改。
用本方法日期域易达K×4162亿年,最大则可达K×3.4亿亿亿亿亿年(K为一较大的正整数),在如此长的时间内不需对日期进行修改,避免了用其他方法表示日期而必须进行的多次修改,从而避免了巨大的经济损失,而且随着计算机技术的发展,计算机能表示的颜色数会更多,则日期域会更大,能够避免更巨大的经济损失。本方法还解决了“00”和“99”问题,可以避免因此而造成的损失。本方法通过年份数颜色的灰度表示世纪数,还充分利用了资源。
权利要求
1.一种解决计算机“千年问题”的方法,通过下述方法来判断闰年若公元纪年最后两位数都是0且能被400整除,则该年份是闰年,若公元纪年最后两位数不都是0且能被4整除,则该年份是闰年,否则不是闰年;其特征在于世纪数通过年份数字的颜色表示,每个年份数字用多种颜色表示,通过颜色的不同组合来表示不同的世纪数,通过年份数字与赋予了特殊含义的“00”和“99”的颜色种类的区别来防止“00”和“99”问题。
全文摘要
本发明提供了一种解决计算机“千年问题”的方法。该方法仍只采用两位数表示年份,但世纪数隐含在年份数字的颜色中,相应就解决了闰年问题。通过年份数字的多色与赋予了特殊含义的“00”和“99”的单色区别就解决了“00”和“99”问题。用本方法日期域易达K×4162亿年,最大则可达K×3.4亿亿亿亿亿年(K为一较大的正整数)。
文档编号G06F3/023GK1271122SQ0011426
公开日2000年10月25日 申请日期2000年5月16日 优先权日1999年5月26日
发明者刘伟山 申请人:刘伟山
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1