快速90度旋转双态图象的系统的制作方法

文档序号:2638071阅读:227来源:国知局
专利名称:快速90度旋转双态图象的系统的制作方法
技术领域
本发明涉及数字图象处理方法,并且更具体地涉及快速旋转双态图象的方法。
因为双态位图每象素只包含单个二进制位,双态图象(亦称为单色图象)是只具有两种明暗等级(通常为黑和白或者黑和绿)的图象。一个分辨率为1024×1024象素屏幕的全部位图是220位,或者约为128,000字节。
随着在办公室和在家庭办公室日益激增象工作站和个人计算机的小存储器计算机,用计算机存储办公室文件、报告、表格、信件甚至照片正盛行为一种减少物理存储要求和提高共同的办公室文件可访问性的手段。
通常资料是用光学字符阅读机(OCR)扫描、传真或者联机数据传输接收到计算机系统里的。提出的挑战在于要例如通过OCR把资料图象输入到一个系统里并且能够迅速有效地操纵它,使得它能够容易地被最终用户看到。
把双态图象相对于它的输入方位旋转90°、180°和270°是资料图象处理中最常使用的操作。传统的解决方法是一次旋转图象的一个象素,但是这种操作非常消耗时间。
因此,在现有技术中已经提出几种加快旋转图象的方法,特别是加快正或负90°的旋转,因为它们要比180°旋转复杂得多。这是由于图象象素组的内部压缩数据表示法所造成的,在表示法中每个字节包括八个图象象素。旋转后的图象必须占据包含旋转前原有图象的存储器。这样,对于这类型的旋转,因为每个垂直列的各个位由旋转压缩成字节而且输出图象的一个行不能以一个字节的一部分终止,行数必须是8的倍数。从而,必须把位置标志数据值加到不是8的倍数列上。
IBM公司的美国专利号4,627,020公开一种90°旋转图象的方法,由于它同时旋转高达64个象素(8×8的块),而不只是一个象素,因此,这种方法比传统的方法快得多。一个图象块要被移进临时存储器里(称为查找表)并且划分成可转动尺寸的更小的字节组。然后旋转所有位不具有相同值的各个组。该方法利用了这个事实大部分图象的大区域是背景色彩的(例如白色),而且只含有一种色彩的图象块或图象图形不需要被转动。这是一种提高,现在被广泛地附加到旋转方法里。但是,如将看到的,因为其对各个旋转字节采用了附加的存储器访问和地址操作,专利4,627,020的方法不如本发明提出的方法那样有效。
同样由IBM公司提出的美国专利号4,658,430针对于旋转编码数据图象的方法,编码数据图象例如是转动90°的倍数后通过电话线发送的。编码数据方位问题,和本发明要对待的数据类型旋转问题是不相同的。
IBM公司的美国专利4,837,845专门处理从原始方位正或负90°旋转二进制图象数据的问题。图象数据首先以部分转置形式存储到包含在8个32位寄存器中的矩阵里。该矩阵被划分成可旋转尺寸的位组(等尺寸的子矩阵),并且在各组里第一预选位位置和第二预选位位置转置。然后组内的行位和组内的第二行的位交换。
作为现有技术,这些IBM专利的每一个专利讨论一些与和解决图象转动有关的早得多的刊物和文献,这些IBM专利的每一篇的内容,特别它们描述现有技术的章节在本文中引用为对比文件。
除上面所述之外,International Computers Limited公司的美国专利号4,916,746公开利用一种硬件旋转电路,顺时针或逆时针90度旋转图象。该旋转电路由FIFO和移位寄存器组成,在其中每次从FIFO读出一个字的数据,位移一位后写回到FIFO,造成一种螺线数据路径。然后利用位移寄存器装配输出的旋转后的图象数据。
佳能株式会社的美国专利号4,985,849公开一种图象处理系统,用于形成原始图象的倾斜变换图象或者转动变形图象。计算原始数据点和输出数据点的地址位置间的关系,并且把这些计算出的值预先存储到查找表里。然后利用查找表的输出地址信息,转换或复制原始地址位置的图象数据。
Cornell Research Foundation公司的美国专利号5,067,167公开通过采用一种数据处理机对三维图象的原始空间坐标值进行修正,将三维图象旋转90°。
Pitney Bowes公司的美国专利号5,233,168公开抗图象扭斜,包括扫描图象以通过象素映象图象俘获象图,确定映象图象的大小及扭斜,进行一系列区域受限的垂直象素偏移,以及进行一系列区域受限的水平象素偏移。
其它用于快速图象旋转的方法是特殊的硬件解决办法,如IBM公司的美国专利号4,947,344里公开的称为旋转缓冲器的专用硬件装置或Yamaha公司的美国专利4,992,960里公开的专用电路。但是,这些类型的硬件解决办法需要和修改现有硬件相联系的相当大的费用,与其相反用软件实现的解决办法最大地利用现有硬件的存储能力。
类似于以前公开的IBM专利(′020、′430和′845),本发明仍旧同时处理图象数据的64象素块,以加速从输入方位向90°或270°方位的图象旋转。但是,因为本发明的方法所需对存储器的访问比现有技术的方法要少,已经发现在基于Intel(英特尔公司)的带有32位寄存器的IBM个人计算机上本发明要快15%至30%,这种个人计算机是本发明主要针对的环境。
从而,本发明在32位操作系统下提供一种90°旋转带有8行乘8列象素数据位的双态图象数据块的方法。本方法包括这些计算机实现的步骤产生一个8行×8列象素数据位的中间矩阵,其中来自该数据块的各行被一分为二并且平移到一对四位列内,在中间矩阵成对的四位列里块内相隔的行被横置排列并且块内的较低阶行被排列到相邻较高阶行的上面。并且把中间矩阵的行顺序地保存到第一和第二32位寄存器里。然后把第一32位寄存器复制到第三32位寄存器里和把第二32位寄存器复制到第四32位寄存器里。第一和第二寄存器按相反的方向各移动一位并且来自第四寄存器的相隔位动态地覆盖到第一寄存器里,同时来自第三寄存器的相隔位动态地覆盖到第四寄存器里。
本发明目的还在于一种带有完成本计算机实现方法的装置的系统。
现在将结合附图详细说明本发明的实施方式,附图是

图1是实施本发明的典型操作系统的示意图;图2和图3表示个人计算机或工作站的显示屏幕,表示方位相差90°的资料;以及图4是一个流程图,表示顺时针或逆时针方向90°旋转图象的计算机实现步骤。
本发明运行在32位编程操作系统环境下,如IBM的OS/2系统,Posix的Unix系统或Microsoft的系统NT。
在图1中示意表示这种类型的操作系统的部件,并且一般包括带有32位存储寄存器的主处理机12,图象存储器14,显示终端16,接收图象的数据装置如OCR图象扫描仪18以及打印机20。其它把图象数据接收到操作系统里的手段可以包括数据传输和传真。显示终端16、图象扫描仪18和打印机20各具有不同的读出或者表示资料或图象的要求。因此,将要求处理机12连同图象存储器14处理图象数据以满足外围设备16、18和20各自的表示要求。
例如,一张照相图象可经过扫描仪18扫描到该系统里,并且如图2中所示,最终作为计算机显示器24上的水平显示图象22。为了使最终用户能以任何有意义的方式使用这个显示图象,这个图象的方位必须顺时针地旋转90°以达到图3所示的计算机显示器24上的位置22a。
本发明方法的步骤表示在图4的流程图里。如前面所讨论的那样地本发明按8×8象素块段旋转图象数据。这样,从整个图象的已存储数据中选出的8×8象素块段(图4中的方块50)可由下表A中所示的64位矩阵所表示。
表A
其中A0、A1……、H6、H7分别代表构成该矩阵的双态象素。
顺时针90°旋转表A的矩阵使该矩阵沿其边转动,使行1变成8位的右边列,并且象素A0在底处。逆时针90°旋转该矩阵使行1变成8位的左边列,并且A0象素在顶处。由此而产生的这两个数据表示法显示在本说明书里的表D和表F里。
根据本发明为了达到顺时针方向和逆时针方向两种旋转应用了相同的一般原理和相同的函数。但是,如下面详细讨论的那样,在许多情况下为了达到逆时针方向的旋转,而不是顺时针方向的旋转,函数是相反的。
变换图象数据的工作区是处理机里的32位寄存器,变换后的数据从工作区移回到存储器里以供显示或打印。64位的矩阵可被存储在两个32位寄存器里。
本发明是在四个主要步骤里执行的。首先,生成一个中间矩阵以建立一个把该矩阵划分成两个各为4字节的寄存器尺寸的行组。中间矩阵存储到两个目标32位寄存器里,然后再复制到另外一对32位寄存器里。接着处理这四个寄存器里的数据,并且最终把四个寄存器分拆回到原始的两个寄存器里,使这两个寄存器含有旋转后的的数据图象。
自始至终,只需要对每个字节进行三次存储器访问(或者每块24次),第一次为在把该字节读入处理机寄存器时,接着为了产生中间矩阵利用该值去访问一个查找表时,而最后的存储器访问是把旋转好的数据保存回到存储器里。
这一点意味着比起现有技术中第二快的旋转方法(其需要对每字节四次存储器访问或者对整个块32次存储器访问)本方法减少25%的存储器访问,也就是本发明提高速度的原因。
根据本发明的最佳实施方式,选出的图象数据的8×8象素矩阵或图象数据块被变换到一个中间矩阵里去(方块52),中间矩阵是以一种方式重新布置的,从而开始重新排列象素的过程,使得象素位置更接近完成旋转时的位置。在预期顺时针方向90°旋转的情况下,中间矩阵是按表B布置的表B
<p>用于旋转的部分重新布置实际上把每行划分成并且移动成一对四位列。中间矩阵的前四行包含从原始数据块中横向排列的奇数行(即,行A、C、E和G)移动得到的成对的4位列。在顺时针方向旋转的情况下,横置排列是从右向左的,并且各个半行的较高阶位布置在较低阶位的上面。对于逆时针方向的旋转,从表E中可以看出,横置排列是从左向右的,并且各个半行的较低阶位布置在较高阶位的上面。中间矩阵的下面四行包含按上面四行类似排列的原始数据块的偶数行(即行B、D、F和H)。
在本发明的最佳实施方式中,中间矩阵是利用四个查找表生成的,这四个查找表放在构成本公开的一部分的附录部分中。
四个查找表的每个表负责变换8×8象素矩阵中的两行。对于顺时针旋转,附录中的表1用于变换行1和行2,表2用于行3和行4,表3用于行5和行6,并且表4用于行7和行8,且行是相隔地变换的(即,行1、3、5和7,然后行2、4、6和8)。对于逆时针旋转,查找表是按相反的次序使用的,表1用于变换行8和行7,表2用于行G和行5,表3用于行4和行3,并且表4用于行2和行1。
在最佳实施方式里,通过用刚刚保存在两个32位处理机寄存器的结果进行动态覆盖来生成中间矩阵。
通过下面的例子,从表C中用二进制记数法表示的双态8×8象素矩阵开始,可说明使用查找表进行90°的旋转。
表C
首先,对行1,利用查找表1的表目15****查找表1行从二进位表示 到二进位表示15000011110000 0001 00000001 00000001 00000001在寄存器R1里保存的32位值为字节3字节2字节1 字节0R1 00000001 00000001 0000000100000001接着,对于行3,利用查找表2的表目20行从二进位表示 到二进位表示200001010000000000 00000100 00000000 00001000该值和行1的4字节值进行逻辑“或”运算,或者动态地进行覆盖,在其中二个4字节行中的任何“1”值替代“0”值。第一32位寄存器的修正结果是字节3字节2 字节1字节0R1 00000001 00000101 00000001 00001001接着,对于行5,利用查找表3 的表目48****查找表3行 从二进位表示 到二进位表示48 00110000 00000000 00000100 00100000 00100000当该4字节值和R1的内容逻辑“或”时,产生下述寄存器值字节3字节2 字节1 字节0R1 00000001 00000101 00100001 00101001最后,对行7,利用查找表4的表目46****查找表4行 从二进位表示 到二进位表示46 00101110 01000000 0100000 11000000 00000000和在该值逻辑“或”之后,寄存器R1含有字节3字节2字节1字节0R1 01000001 01000101 11100001 00101001对行2、4、6和8,分别利用查找表1、2、3和4重复相同的过程,在R2里保存的结果为字节3 字节2字节1字节0R1 00010000 00110100 11000001 00101101
这样完成中间矩阵的生成处理。为了阐明这些结果,R1和R2的内容可以以一种矩阵型的格式把高位字节放在低位字节之上显示如下R1字节301000001R1字节201000101R1字节111100001R1字节000101001R2字节300010000R2字节200110100R2字节111000001R2字节000101101这样,回到原始的一般性例子,中间矩阵的前四行(或前四字节行)保存到图4的第一位32位寄存器R1里(方块54),而中间矩阵的另外四行(或后四字节行)保存到第二32位寄存器R2里(方块56)。这样,在一种32位的环境下,中间矩阵以下面的表示法保持在两个32位寄存器R1里和R2里
寄存器R1和R2的内容然后分别复制到另外两个32位寄存器R3和R4里(方块58)以达到下列表示法
当旋转为顺时针90°旋转时(方块60),把R1和R4的偶数位置为零(方块62)和把R2和R3的奇数位置为零(方块64),以造成寄存器里的下述改变
接着把R1的内容向右移一位和把R2的内容向左移一位(方块66),这样四个寄存器的内容如下所示
然后R1和R4进行逻辑“或”运算(方块74)并且R2和R3进行逻辑“或”运算(方块76)以获得寄存器R1和R2的下述内容<
现在,在矩阵格式下,R1和R2包含旋转后的8×8象素矩阵表DR1<
R2
<p>在32位的环境下,上述中间矩阵可用下述表示法保持在两个32位寄存器R1和R2里(方块54和56)<
接着把R1和R2的内容分别复制到另外两个32位寄存器R3和R4里(方块58
>
对于逆时针方向的旋转(方块60),把R1和R4的奇数位置为零(方块68)并把R2和R3的偶数位置为零(方块70)。这样把四个寄存器的内容改变为
把R1的内容向左移一位和把R2的内容向右移一位(方块72),这样现在4个寄存器显示为
R1和R4进行逻辑“或”运算(方块74),并且R2和R3进行逻辑“或”运算(方块76)。然后,前二个寄存器具有如下的表示<
现在R1和R2包含着从原始方位逆时针方向旋转90°后的8×8象素矩阵。若按矩阵格式表示,数据显示如下表FR1
R2<
在IBM32位计算机上实现的最佳实施方式里,本发明的方法运行快得多,并且在32位的平台上本方法的开销要比所知以前的方法要少。
测试结果表明在基于Intel的IBM PC计算机上本方法要快30%,如果使用超高速缓冲存储器这个结果还会更好。
在附属权利要求书的范围内熟练的技术人员可对这里所说明的最佳实施方式进行明显的修改。
查找表1表目从二进制表示 到二进制表示000000000 00000000 00000000 00000000 00000000100000001 00000000 00000000 00000000 00000001200000010 00000000 00000000 00000001 00000000300000011 00000000 00000000 00000001 00000001400000100 00000000 00000001 00000000 00000000500000101 00000000 00000001 00000000 00000001600000110 00000000 00000001 00000001 00000000700000111 00000000 00000001 00000001 00000001800001000 00000001 00000000 00000000 00000000900001001 00000001 00000000 00000000 000000011000001010 00000001 00000000 00000001 000000001100001011 00000001 00000000 00000001 000000011200001100 00000001 00000001 00000000 000000001300001101 00000001 00000001 00000000 000000011400001110 00000001 00000001 00000001 000000001500001111 00000001 00000000 00000001 000000011600010000 00000000 00000000 00000000 000000101700010001 00000000 00000000 00000000 000000111800010010 00000000 00000000 00000001 000000101900010011 00000000 00000000 00000001 000000112000010100 00000000 00000001 00000000 000000102100010101 00000000 00000001 00000000 000000112200010110 00000000 00000001 00000001 000000102300010111 00000000 00000001 00000001 000000112400011000 00000001 00000000 00000000 000000102500011001 00000001 00000000 00000000 000000112600011010 00000001 00000000 00000001 000000102700011011 00000001 00000000 00000001 000000112800011100 00000001 00000001 00000000 000000102900011101 00000001 00000001 00000000 000000113000011110 00000001 00000001 00000001 000000103100011111 00000001 00000001 00000001 000000113200100000 00000000 00000000 00000010 000000003300100001 00000000 00000000 00000010 000000013400100010 00000000 00000000 00000011 000000003500100011 00000000 00000000 00000011 000000013600100100 00000000 00000001 00000010 000000003700100101 00000000 00000001 00000010 000000013800100110 00000000 00000001 00000011 000000003900100111 00000000 00000001 00000011 00000001400010100000000001 00000000 00000010 00000000410010100100000001 00000000 00000010 00000001420010101000000001 00000000 00000011 00000000430010101100000001 00000000 00000011 00000001440010110000000001 00000001 00000010 00000000450010110100000001 00000001 00000010 00000001460010111000000001 00000001 00000011 00000000470010111100000001 00000001 00000011 00000001480011000000000000 00000000 00000010 00000010490011000100000000 00000000 00000010 00000011500011001000000000 00000000 00000011 00000010510011001100000000 00000000 00000011 00000011520011010000000000 00000001 00000010 00000010530011010100000000 00000001 00000010 00000011540011011000000000 00000001 00000011 00000010550011011100000000 00000001 00000011 00000011560011100000000001 00000000 00000010 00000010570011100100000001 00000000 00000010 00000011580011101000000001 00000000 00000011 00000010590011101100000001 00000000 00000011 00000011600011110000000001 00000001 00000010 00000010610011110100000001 00000001 00000010 00000011620011111000000001 00000001 00000011 00000010630011111100000001 00000001 00000011 00000011640100000000000000 00000010 00000000 00000000650100000100000000 00000010 00000000 00000001660100001000000000 00000010 00000001 00000000670100001100000000 00000010 00000001 00000001680100010000000000 00000011 00000000 00000000690100010100000000 00000011 00000000 00000001700100011000000000 00000011 00000001 00000000710100011100000000 00000011 00000001 00000001720100100000000001 00000010 00000000 00000000730100100100000001 00000010 00000000 00000001740100101000000001 00000010 00000001 00000000750100101100000001 00000010 00000001 00000001760100110000000001 00000011 00000000 00000000770100110100000001 00000011 00000000 00000001780100111000000001 00000011 00000001 00000000790100111100000001 00000011 00000001 00000001800101000000000000 00000010 00000000 00000010810101000100000000 00000010 00000000 00000011820101001000000000 00000010 00000001 00000010830101001100000000 00000010 00000001 00000011840101010000000000 00000011 00000000 00000010850101010100000000 00000011 00000000 00000011860101011000000000 00000011 00000001 00000010870101011100000000 00000011 00000001 00000011880101100000000001 00000010 00000000 00000010890101100100000001 00000010 00000000 00000011900101101000000001 00000010 00000001 00000010910101101100000001 00000010 00000001 00000011920101110000000001 00000011 00000000 00000010930101110100000001 00000011 00000000 00000011940101111000000001 00000011 00000001 00000010950101111100000001 00000011 00000001 00000011960110000000000000 00000010 00000010 00000000970110000100000000 00000010 00000010 00000001880110001000000000 00000010 00000011 00000000990110001100000000 00000010 00000011 000000011000110010000000000 00000011 00000010 000000001010110010100000000 00000011 00000010 000000011020110011000000000 00000011 00000011 000000001030110011100000000 00000011 00000011 000000011040110100000000001 00000010 00000010 000000001050110100100000001 00000010 00000010 000000011060110101000000001 00000010 00000011 000000001070110101100000001 00000010 00000011 000000011080110110000000001 00000011 00000010 000000001090110110100000001 00000011 00000010 000000011100110111000000001 00000011 00000011 000000001110110111100000001 00000011 00000011 000000011120111000000000000 00000010 00000010 000000101130111000100000000 00000010 00000010 000000111140111001000000000 00000010 00000011 000000101150111001100000000 00000010 00000011 000000111160111010000000000 00000011 00000010 000000101170111010100000000 00000011 00000010 000000111180111011000000000 00000011 00000011 000000101190111011100000000 00000011 00000011 000000111200111100000000001 00000010 00000010 000000101210111100100000001 00000010 00000010 000000111220111101000000001 00000010 00000011 000000101230111101100000001 00000010 00000011 000000111240111110000000001 00000011 00000010 000000101250111110100000001 00000011 00000010 000000111260111111000000001 00000011 00000011 000000101270111111100000001 00000011 00000011 000000111281000000000000010 00000000 00000000 000000001291000000100000010 00000000 00000000 000000011301000001000000010 00000000 00000001 000000001311000001100000010 00000000 00000001 000000011321000010000000010 00000001 00000000 000000001331000010100000010 00000001 00000000 000000011341000011000000010 00000001 00000001 000000001351000011100000010 00000001 00000001 000000011361000100000000011 00000000 00000000 000000001371000100100000011 00000000 00000000 000000011381000101000000011 00000000 00000001 000000001391000101100000011 00000000 00000001 000000011401000110000000011 00000001 00000000 000000001411000110100000011 00000001 00000000 000000011421000111000000011 00000001 00000001 000000001431000111100000011 00000001 00000001 000000011441001000000000010 00000000 00000000 000000101451001000100000010 00000000 00000000 000000111461001001000000010 00000000 00000001 000000101471001001100000010 00000000 00000001 000000111481001010000000010 00000001 00000000 000000101491001010100000010 00000001 00000000 000000111501001011000000010 00000001 00000001 000000101511001011100000010 00000001 00000001 000000111521001100000000011 00000000 00000000 000000101531001100100000011 00000000 00000000 000000111541001101000000011 00000000 00000001 000000101551001101100000011 00000000 00000001 000000111561001110000000011 00000001 00000000 000000101571001110100000011 00000001 00000000 000000111581001111000000011 00000001 00000001 000000101591001111100000011 00000001 00000001 000000111601010000000000010 00000000 00000010 000000001611010000100000010 00000000 00000010 000000011621010001000000010 00000000 00000011 000000001631010001100000010 00000000 00000011 000000011641010010000000010 00000001 00000010 000000001661010011000000010 00000001 00000011 000000001671010011100000010 00000001 00000011 000000011681010100000000011 00000000 00000010 000000001691010100100000011 00000000 00000010 000000011701010101000000011 00000000 00000011 000000001711010101100000011 00000000 00000011 000000011721010110000000011 00000001 00000010 000000001731010110100000011 00000001 00000010 000000011741010111000000011 00000001 00000011 000000001751010111100000011 00000001 00000011 000000011761011000000000010 00000000 00000010 000000101771011000100000010 00000000 00000010 000000111781011001000000010 00000000 00000011 000000101791011001100000010 00000000 00000011 000000111801011010000000010 00000001 00000010 000000101811011010100000010 00000001 00000010 000000111821011011000000010 00000001 00000011 000000101831011011100000010 00000001 00000011 000000111841011100000000011 00000000 00000010 000000101851011100100000011 00000000 00000010 000000111861011101000000011 00000000 00000011 000000101871011101100000011 00000000 00000011 000000111881011110000000011 00000001 00000010 000000101891011110100000011 00000001 00000010 000000111901011111000000011 00000001 00000011 000000101911011111100000011 00000001 00000011 000000111921100000000000010 00000010 00000000 000000001931100000100000010 00000010 00000000 000000011941100001000000010 00000010 00000001 000000001951100001100000010 00000010 00000001 000000011961100010000000010 00000011 00000000 000000001971100010100000010 00000011 00000000 000000011981100011000000010 00000011 00000001 000000001991100011100000010 00000011 00000001 000000012001100100000000011 00000010 00000000 000000002011100100100000011 00000010 00000000 000000012021100101000000011 00000010 00000001 000000002031100101100000011 00000010 00000001 000000012041100110000000011 00000011 00000000 000000002051100110100000011 00000011 00000000 000000012061100111000000011 00000011 00000001 000000002071100111100000011 00000011 00000001 000000012081101000000000010 00000010 00000000 000000102091101000100000010 00000010 00000000 000000112101101001000000010 00000010 00000001 000000102111101001100000010 00000010 00000001 000000112121101010000000010 00000011 00000000 000000102131101010100000010 00000011 00000000 000000112141101011000000010 00000011 00000001 000000102151101011100000010 00000011 00000001 000000112161101100000000011 00000010 00000000 000000102171101100100000011 00000010 00000000 000000112181101101000000011 00000010 00000001 000000102191101101100000011 00000010 00000001 000000112201101110000000011 00000011 00000000 000000102211101110100000011 00000011 00000000 000000112221101111000000011 00000011 00000001 000000102231101111100000011 00000011 00000001 000000112241110000000000010 00000010 00000010 000000002251110000100000010 00000010 00000010 000000012261110001000000010 00000010 00000011 000000002271110001100000010 00000010 00000011 000000012281110010000000010 00000011 00000010 000000002291110010100000010 00000011 00000010 000000012301110011000000010 00000011 00000011 000000002311110011100000010 00000011 00000011 000000012321110100000000011 00000010 00000010 000000002331110100100000011 00000010 00000010 000000012341110101000000011 00000010 00000011 000000002351110101100000011 00000010 00000011 000000012361110110000000011 00000011 00000010 000000002371110110100000011 00000011 00000010 000000012381110111000000011 00000011 00000011 000000002391110111100000011 00000011 00000011 000000012401111000000000010 00000010 00000010 000000102411111000100000010 00000010 00000010 000000112421111001000000010 00000010 00000011 000000102431111001100000010 00000010 00000011 000000112441111010000000010 00000011 00000010 000000102451111010100000010 00000011 00000010 000000112461111011000000010 00000011 00000011 000000102471111011100000010 00000011 00000011 000000112481111100000000011 00000010 00000010 000000102491111100100000011 00000010 00000010 000000112501111101000000011 00000010 00000011 000000102511111101100000011 00000010 00000011 000000112521111110000000011 00000011 00000010 000000102531111110100000011 00000011 00000010 000000112541111111000000011 00000011 00000011 000000102551111111100000011 00000011 00000011 00000011
查找表2表目 从二进制表示 到二进制表示0 00000000 00000000 00000000 00000000 000000001 00000001 00000000 00000000 00000000 000001002 00000010 00000000 00000000 00000100 000000003 00000011 00000000 00000000 00000100 000001004 00000100 00000000 00000100 00000000 000000005 00000101 00000000 00000100 00000000 000001006 00000110 00000000 00000100 00000100 000000007 00000111 00000000 00000100 00000100 000001008 00001000 00000100 00000000 00000000 000000009 00001001 00000100 00000000 00000000 0000010010 00001010 00000100 00000000 00000100 0000000011 00001011 00000100 00000000 00000100 0000010012 00001100 00000100 00000100 00000000 0000000013 00001101 00000100 00000100 00000000 0000010014 00001110 00000100 00000100 00000100 0000000015 00001111 00000100 00000100 00000100 0000010016 00010000 00000000 00000000 00000000 0000100017 00010001 00000000 00000000 00000000 0000110018 00010010 00000000 00000000 00000100 0000100019 00010011 00000000 00000000 00000100 0000110020 00010100 00000000 00000100 00000000 0000100021 00010101 00000000 00000100 00000000 0000110022 00010110 00000000 00000100 00000100 0000100023 00010111 00000000 00000100 00000100 0000110024 00011000 00000100 00000000 00000000 0000100025 00011001 00000100 00000000 00000000 0000110026 00011010 00000100 00000000 00000100 0000100027 00011011 00000100 00000000 00000100 0000110028 00011100 00000100 00000100 00000000 0000100029 00011101 00000100 00000100 00000000 0000110030 00011110 00000100 00000100 00000100 0000100031 00011111 00000100 00000100 00000100 0000110032 00100000 00000000 00000000 00001000 0000000033 00100001 00000000 00000000 00001000 0000010034 00100010 00000000 00000000 00001100 0000000035 00100011 00000000 00000000 00001100 0000010036 00100100 00000000 00000100 00001000 0000000037 00100101 00000000 00000100 00001000 0000010038 00100110 00000000 00000100 00001100 0000000039 00100111 00000000 00000100 00001100 00000100400010100000000100 00000000 00001000 00000000410010100100000100 00000000 00601000 00000100420010101000000100 00000000 00001100 00000000430010101100000100 00000000 00001100 00000100440010110000000100 00000100 00001000 00000000450010110100000100 00000100 00001000 00000100460010111000000100 00000100 00001100 00000000470010111100000100 00000100 00001100 00000100480011000000000000 00000000 00001000 00001000490011000100000000 00000000 00001000 00001100500011001000000000 00000000 00001100 00001000510011001100000000 00000000 00001100 00001100520011010000000000 00000100 00001000 00001000530011010100000000 00000100 00001000 00001100540011011000000000 00000100 00001100 00001000550011011100000000 00000100 00001100 00001100560011100000000100 00000000 00001000 00001000570011100100000100 00000000 00001000 00001100580011101000000100 00000000 00001100 00001000590011101100000100 00000000 00001100 00001100600011110000000100 00000100 00001000 00001000610011110100000100 00000100 00001000 00001100620011111000000100 00000100 00001100 00001000630011111100000100 00000100 00001100 00001100640100000000000000 00001000 00000000 00000000650100000100000000 00001000 00000000 00000100660100001000000000 00001000 00000100 00000000670100001100000000 00001000 00000100 00000100680100010000000000 00001100 00000000 00000000690100010100000000 00001100 00000000 00000100700100011000000000 00001100 00000100 00000000710100011100000000 00001100 00000100 00000100720100100000000100 00001000 00000000 00000000730100100100000100 00001000 00000000 00000100740100101000000100 00001000 00000100 00000000750100101100000100 00001000 00000100 00000100760100110000000100 00001100 00000000 00000000770100110100000100 00001100 00000000 00000100780100111000000100 00001100 00000100 00000000790100111100000100 00001100 00000100 00000100800101000000000000 00001000 00000000 00001000810101000100000000 00001000 00000000 00001100820101001000000000 00001000 00000100 00001000830101001100000000 00001000 00000100 00001100840101010000000000 00001100 00000000 00001000850101010100000000 00001100 00000000 00001100860101011000000000 00001100 00000100 00001000870101011100000000 00001100 00000100 00001100880101100000000100 00001000 00000000 00001000890101100100000100 00001000 00000000 00001100900101101000000100 00001000 00000100 00001000910101101100000100 00001000 00000100 00001100920101110000000100 00001100 00000000 00001000930101110100000100 00001100 00000000 00001100940101111000000100 00001100 00000100 00001000950101111100000100 00001100 00000100 00001100960110000000000000 00001000 00001000 00000000970110000100000000 00001000 00001000 00000100980110000100000000 00001000 00001100 00000000990110001100000000 00001000 00001100 000001001000110010000000000 00001100 00001000 000000001010110010100000000 00001100 00001000 000001001020110011000000000 00001100 00001100 000000001030110011100000000 00001100 00001100 000001001040110100000000100 00001000 00001000 000000001050110100100000100 00001000 00001000 000001001060110101000000100 00001000 00001100 000000001070110101100000100 00001000 00001100 000001001080110110000000100 00001100 00001000 000000001090110110100000100 00001100 00001000 000001001100110111000000100 00001100 00001100 000000001110110111100000100 00001100 00001100 000001001120111000000000000 00001000 00001000 000010001130111000100000000 00001000 00001000 000011001140111001000000000 00001000 00001100 000010001150111001100000000 00001000 00001100 000011001160111010000000000 00001100 00001000 000010001170111010100000000 00001100 00001000 000011001180111011000000000 00001100 00001100 000010001190111011100000000 00001100 00001100 000011001200111100000000100 00001000 00001000 000010001210111100100000100 00001000 00001000 000011001220111101000000100 00001000 00001100 000010001230111101100000100 00001000 00001100 000011001240111110000000100 00001100 00001000 000010001250111110100000100 00001100 00001000 000011001260111111000000100 00001100 00001100 000010001270111111100000100 00001100 00001100 000011001281000000000001000 00000000 00000000 000000001291000000100001000 00000000 00000000 000001001301000001000001000 00000000 00000100 000000001311000001100001000 00000000 00000100 000001001321000010000001000 00000100 00000000 000000001331000010100001000 00000100 00000000 000001001341000011000001000 00000100 00000100 000000001351000011100001000 00000100 00000100 000001001361000100000001100 00000000 00000000 000000001371000100100001100 00000000 00000000 000001001381000101000001100 00000000 00000100 000000001391000101100001100 00000000 00000100 000001001401000110000001100 00000100 00000000 000000001411000110100001100 00000100 00000000 000001001421000111000001100 00000100 00000100 000000001431000111100001100 00000100 00000100 000001001441001000000001000 00000000 00000000 000010001451001000100001000 00000000 00000000 000011001461001001000001000 00000000 00000100 000010001471001001100001000 00000000 00000100 000011001481001010000001000 00000100 00000000 000010001491001010100001000 00000100 00000000 000011001501001011000001000 00000100 00000100 000010001511001011100001000 00000100 00000100 000011001521001100000001100 00000000 00000000 000010001531001100100001100 00000000 00000000 000011001541001101000001100 00000000 00000100 000010001551001101100001100 00000000 00000100 000011001561001110000001100 00000100 00000000 000010001571001110100001100 00000100 00000000 000011001581001111000001100 00000100 00000100 000010001591001111100001100 00000100 00000100 000011001601010000000001000 00000000 00001000 000000001611010000100001000 00000000 00001000 000001001621010001000001000 00000000 00001100 000000001631010001100001000 00000000 00001100 000001001641010010000001000 00000100 00001000 000000001651010010100001000 00000100 00001000 000001001661010011000001000 00000100 00001100 000000001671010011100001000 00000100 00001100 000001001681010100000001100 00000000 00001000 000000001691010100100001100 00000000 00001000 000001001701010101000001100 00000000 00001100 000000001711010101100001100 00000000 00001100 000001001721010110000001100 00000100 00001000 000000001731010110100001100 00000100 00001000 000001001741010111000001100 00000100 00001100 000000001751010111100001100 00000100 00001100 000001001761011000000001000 00000000 00001000 000010001771011000100001000 00000000 00001000 000011001781011001000001000 00000000 00001100 000010001791011001100001000 00000000 00001100 000011001801011010000001000 00000100 00001000 000010001811011010100001000 00000100 00001000 000011001821011011000001000 00000100 00001100 000010001831011011100001000 00000100 00001100 000011001841011100000001100 00000000 00001000 000019001851011100100001100 00000000 00001000 000011001861011101000001100 00000000 00001100 000010001871011101100001100 00000000 00001100 000011001881011110000001100 00000100 00001000 000010001891011110100001100 00000100 00001000 000011001901011111000001100 00000100 00001100 000010001911011111100001100 00000100 00001100 000011001921100000000001000 00001000 00000000 000000001931100000100001000 00001000 00000000 000001001941100001000001000 00001000 00000100 000000001951100001100001000 00001000 00000100 000001001961100010000001000 00001100 00000000 000000001971100010100001000 00001100 00000000 000001001981100011000001000 00001100 00000100 000000001991100011100001000 00001100 00000100 000001002001100100000001100 00001000 00000000 000000002011100100100001100 00001000 00000000 000001002021100101000001100 00001000 00000100 000000002031300101100001100 00001000 00000100 000001002041100110000001100 00001100 00000000 000000002051100110100001100 00001100 00000000 000001002061100111000001100 00001100 00000100 000000002071100111100001100 00001100 00000100 000001002081101000000001000 00001000 00000000 000010002091101000100001000 00001000 00000000 000011002101101001000001000 00001000 00000100 000010002111101001100001000 00001000 00000100 000011002121101010000001000 00001100 00000000 000010002131101010100001000 00001100 00000000 000011002141101011000001000 00001100 00000100 000010002151101011100001000 00001100 00000100 000011002161101100000001100 00001000 00000000 000010002171101100100001100 00001000 00000000 000011002181101101000001100 00001000 00000100 000010002191101101100001100 00001000 00000100 000011002201101110000001100 00001100 00000000 000010002211101110100001100 00001100 00000000 000011002221101111000001100 00001100 00000100 000010002231101111100001100 00001100 00000100 000011002241110000000001000 00001000 00001000 000000002251110000100001000 00001000 00001000 000001002261110001000001000 00001000 00001100 000000002271110001100001000 00001000 00001100 000001002281110010000001000 00001100 00001000 000000002291110010100001000 00001100 00001000 000001002301110011000001000 00001100 00001100 000000002311110011100001000 00001100 00001100 000001002321110100000001100 00001000 00001000 000000002331110100100001100 00001000 00001000 000001002341110101000001100 00001000 00001100 000000002351110101100001100 00001000 00001100 000001002361110110000001100 00001100 00001000 000000002371110110100001100 00001100 00001000 000001002381110111000001100 00001100 00001100 000000002391110111100001100 00001100 00001100 000001002401111000000001000 00001000 00001000 000010002111111000100001000 00001000 00001000 000011002421111001000001000 00001000 00001100 000010002431111001100001000 00001000 00001100 000011002441111010000001000 00001100 00001000 000010002451111010100001000 00001100 00001000 000011002461111011000001000 00001100 00001100 000010002471111011100001000 00001100 00001100 000011002481111100000001100 00001000 00001000 000010002491111100100001100 00001000 00001000 000011002501111101000001100 00001000 00001100 000010002511111101100001100 00001000 00001100 000011002521111110000001100 00001100 00001000 000010002531111110100001100 00001100 00001000 000011002541111111000001100 00001100 00001100 000010002551111111100001100 00001100 00001100 00001100
查找表3表目从二进制表示到二进制表示00000000000000000 00000000 00000000 0000000010000000100000000 00000000 00000000 0001000020000001000000000 00000000 00010000 0000000030000001100000000 00000000 00010000 0001000040000010000000000 00010000 00000000 0000000050000010100000000 00010000 00000000 0001000060000011000000000 00010000 00010000 0000000070000011100000000 00010000 00010000 0001000080000100000010000 00000000 00000000 0000000090000100100010000 00000000 00000000 00010000100000101000010000 00000000 00010000 00000000110000101100010000 00000000 00010000 00010000120000110000010000 00010000 00000000 00000000130000110100010000 00010000 00000000 00010000150000111100010000 00010000 00010000 00010000160001000000000000 00000000 00000000 00100000170001000100000000 00000000 00000000 00110000180001001000000000 00000000 00010000 00100000190001001100000000 00000000 00010000 00110000200001010000000000 00010000 00000000 00100000210001010100000000 00010000 00000000 00110000220001011000000000 00010000 00010000 00100000230001011100000000 00010000 00010000 00110000240001100000010000 00000000 00000000 00100000250001100100010000 00000000 00000000 00110000260001101000010000 00000000 00010000 00100000270001101100010000 00000000 00010000 00110000280001110000010000 00010000 00000000 00100000290001110100010000 00010000 00000000 00110000300001111000010000 00010000 00010000 00100000310001111100010000 00010000 00010000 00110000320010000000000000 00000000 00100000 00000000330010000100000000 00000000 00100000 00010000340010001000000000 00000000 00110000 00000000350010001100000000 00000000 00110000 00010000360010010000000000 00010000 00100000 00000000370010010100000000 00010000 00100000 00010000380010011000000000 00010000 00110000 00000000390010011100000000 00010000 00110000 00010000400010100000010000 00000000 00100000 00000000410010100100010000 00000000 00100000 00010000420010101000010000 00000000 00110000 00000000430010101100010000 00000000 00110000 00010000440010110000010000 00010000 00100000 00000000450010110100010000 00010000 00100000 00010000460010111000010000 00010000 00110000 00000000470010111100010000 00010000 00110000 00010000480011000000000000 00000000 00100000 00100000490011000100000000 00000000 00100000 00110000500011001000000000 00000000 00110000 00100000510011001100000000 00000000 00110000 00110000520011010000000000 00010000 00100000 00100000530011010100000000 00010000 00100000 00110000540011011000000000 00010000 00110000 00100000550011011100000000 00010000 00110000 00110000560011100000010000 00000000 00100000 00100000570011100100010000 00000000 00100000 00110000580011101000010000 00000000 00110000 00100000590011101100010000 00000000 00110000 00110000600011110000010000 00010000 00100000 00100000610011110100010000 00010000 00100000 00110000620011111000010000 00010000 00110000 00100000630011111100010000 00010000 00110000 00110000640100000000000000 00100000 00000000 00000000650100000100000000 00100000 00000000 00010000660100001000000000 00100000 00010000 00000000670100001100000000 00100000 00010000 00010000680100010000000000 00110000 00000000 00000000690100010100000000 00110000 00000000 00010000700100011000000000 00110000 00010000 00000000710100011100000000 00110000 00010000 00010000720100100000010000 00100000 00000000 00000000730100100100010000 00100000 00000000 00010000740100101000010000 00100000 00010000 00000000750100101100010000 00100000 00010000 00010000760100110000010000 00110000 00000000 00000000770100110100010000 00110000 00000000 00010000780100111000010000 00110000 00010000 00000000790100111100010000 00110000 00010000 00010000800101000000000000 00100000 00000000 00100000810101000100000000 00100000 00000000 00110000820101001000000000 00100000 00010000 00100000830101001100000000 00100000 00010000 00110000840101010000000000 00110000 00000000 00100000850101010100000000 00110000 00000000 00110000860101011000000000 00110000 00010000 00100000870101011100000000 00110000 00010000 00110000880101100000010000 00100000 00000000 00100000890101100100010000 00100000 00000000 00110000900101101000010000 00100000 00010000 00100000910101101100010000 00100000 00010000 00110000920101110000010000 00110000 00000000 00100000930101110100010000 00110000 00000000 00110000940101111000010000 00110000 00010000 00100000950101111100010000 00110000 00010000 00110000960110000000000000 00100000 00100000 00000000970110000100000000 00100000 00100000 00010000980110001000000000 00100000 00110000 00000000990110001100000000 00100000 00110000 000100001000110010000000000 00110000 00100000 000000001010110010100000000 00110000 00100000 000100001020110011000000000 00110000 00110000 000000001030110011100000000 00110000 00110000 000100001040110100000010000 00100000 00100000 000000001050110100100010000 00100000 00100000 000100001060110101000010000 00100000 00110000 000000001070110101100010000 00100000 00110000 000100001080110110000010000 00110000 00100000 000000001090110110100010000 00110000 00100000 000100001100110111000010000 00110000 00110000 000000001110110111100010000 00110000 00110000 000100001120111000000000000 00100000 00100000 001000001130111000100000000 00100000 00100000 001100001140111001000000000 00100000 00110000 001000001150111001100000000 00100000 00110000 001100001160111010000000000 00110000 00100000 001000001170111010100000000 00110000 00100000 001100001180111011000000000 00110000 00110000 001000001190111011100000000 00110000 00110000 001100001200111100000010000 00100000 00100000 001000001210111100100010000 00100000 00100000 001100001220111101000010000 00100000 00110000 001000001230111101100010000 00100000 00110000 001100001240111110000010000 00110000 00100000 001000001250111110100010000 00110000 00100000 001100001260111111000010000 00110000 00110000 001000001270111111100010000 00110000 00110000 001100001281000000000100000 00000000 00000000 000000001291000000100100000 00000000 00000000 000100001301000001000100000 00000000 00010000 000000001311000001100100000 00000000 00010000 000100001321000010000100000 00010000 00000000 000000001331000010100100000 00010000 00000000 000100001341000011000100000 00010000 00010000 000000001351000011100100000 00010000 00010000 000100001361000100000110000 00000000 00000000 000000001371000100100110000 00000000 00000000 000000001381000101000110000 00000000 00010000 000000001391000101100110000 00000000 00010000 000100001401000110000110000 00010000 00000000 000000001411000110100110000 00010000 00000000 000100001421000111000110000 00010000 00010000 000000001131000111100110000 00010000 00010000 000100001441001000000100000 00000000 00000000 001000001151001000100100000 00000000 00000000 001100001461001001000100000 00000000 00010000 001000001471001001100100000 00000000 00010000 001100001481001010000100000 00010000 00000000 001000001491001010100100000 00010000 00000000 001100001501001011000100000 00010000 00010000 001000001511001011100100000 00010000 00010000 001100001521001100000110000 00000000 00000000 001000001531001100100110000 00000000 00000000 001100001541001101000110000 00000000 00010000 001000001551001101100110000 00000000 00010000 001100001561001110000110000 00010000 00000000 001000001571001110100110000 00010000 00000000 001100001581001111000110000 00010000 00010000 001000001591001111100110000 00010000 00010000 001100001601010000000100000 00000000 00100000 000000001611010000100100000 00000000 00100000 000100001621010001000100000 00000000 00110000 000000001631010001100100000 00000000 00110000 000100001641010010000100000 00010000 00100000 000000001651010010100100000 00010000 00100000 000100001661010011000100000 00010000 00110000 000000001671010011100100000 00010000 00110000 000100001681010100000110000 00000000 00100000 000000001691010100100110000 00000000 00100000 000100001701010101000110000 00000000 00110000 000000001711010101100110000 00000000 00110000 000100001721010110000110000 00010000 00100000 000000001731010110100110000 00010000 00100000 000100001741010111000110000 00010000 00110000 000000001751010111100110000 00010000 00110000 000100001761011000000100000 00000000 00100000 001000001771011000100100000 00000000 00100000 001100001781011001000100000 00000000 00110000 001000001791011001100100000 00000000 00110000 001100001801011010000100000 00010000 00100000 001000001811011010100100000 00010000 00100000 001100001821011011000100000 00010000 00110000 001000001831011011100100000 00010000 00110000 001100001841011100000110000 00000000 00100000 001000001851011100100110000 00000000 00100000 001100001861011101000110000 00000000 00110000 001000001871011101100110000 00000000 00110000 001100001881011110000110000 00010000 00100000 001000001891011110100110000 00010000 00100000 001100001901011111000110000 00010000 00110000 001000001911011111100110000 00010000 00110000 001100001921100000000100000 00100000 00000000 000000001031100000100100000 00100000 00000000 000100001941100001000100000 00100000 00010000 000000001951100001100100000 00100000 00010000 000100001961100010000100000 00110000 00000000 000000001971100010100100000 00110000 00000000 000100001981100011000100000 00110000 00010000 000000001991100011100100000 00110000 00010000 000100002001100100000110000 00100000 00000000 000000002011100100100110000 00100000 00000000 000100002021100101000110000 00100000 00010000 000000002031100101100110000 00100000 00010000 000100002041100110000110000 00110000 00000000 000000002051100110100110000 00110000 00000000 000100001100111000110000 00110000 00010000 000000001100111100110000 00110000 00010000 000100001101000000100000 00100000 00000000 001000001101000100100000 00100000 00000000 001100001101001000100000 00100000 00010000 001000001101001100100000 00100000 00010000 001100001101010000100000 00110000 00000000 001000001101010100100000 00110000 00000000 001100001101011000100000 00110000 00010000 001000001101011100100000 00110000 00010000 001100001101100000110000 00100000 00000000 001000001101100100110000 00100000 00000000 001100001101101000110000 00100000 00010000 001000001101101100110000 00100000 00010000 001100001101110000110000 00110000 00000000 001000001101110100110000 00110000 00000000 001100001101111000110000 00110000 00010000 001000001101111100110000 00110000 00010000 001100001110000000100000 00100000 00100000 000000001110000100100000 00100000 00100000 000100001110001000100000 00100000 00110000 000000001110001100100000 00100000 00110000 000100001110010000100000 00110000 00100000 000000001110010100100000 00110000 00100000 000100001110011000100000 00110000 00110000 000000001110011100100000 00110000 00110000 000100002321110100000110000 00100000 00100000 000000002331110100100110000 00100000 00100000 000100002341110101000110000 00100000 00110000 000000002351110101100110000 00100000 00110000 000100002361110110000110000 00110000 00100000 000000002371110110100110000 00110000 00100000 000100002381110111000110000 00110000 00110000 000000002391110111100110000 00110000 00110000 000100002401111000000100000 00100000 00100000 001000002411111000100100000 00100000 00100000 001100002421111001000100000 00100000 00110000 001000002431111001100100000 00100000 00110000 001100002441111010000100000 00110000 00100000 001000002451111010100100000 00110000 00100000 001100002461111011000100000 00110000 00110000 001000002471111011100100000 00110000 00110000 001100002481111100000110000 00100000 00100000 001000002491111100100110000 00100000 00100000 001100002501111101000110000 00100000 00110000 001000002511111101100110000 00100000 00110000 001100002521111110000110000 00110000 00100000 001000002531111110100110000 00110000 00100000 001100002541111111000110000 00110000 00110000 001000002551111111100110000 00110000 00110000 00110000256
查找表4 .表目从二进制表示到二进制表示0 0000000000000000 00000000 00000000 000000001 0000000100000000 00000000 00000000 010000002 0000001000000000 00000000 01000000 000000003 0000001100000000 00000000 01000000 010000004 0000010000000000 01000000 00000000 000000005 0000010100000000 01000000 00000000 010000006 0000011000000000 01000000 01000000 000000007 0000011100000000 01000000 01000000 010000008 0000100001000000 00000000 00000000 000000009 0000100101000000 00000000 00000000 0100000010 0000101001000000 00000000 01000000 0000000011 0000101101000000 00000000 01000000 0100000012 0000110001000000 01000000 00000000 0000000013 0000110101000000 01000000 00000000 0100000014 0000111001000000 01000000 01000000 0000000015 0000111101000000 01000000 01000000 0100000016 0001000000000000 00000000 00000000 1000000017 0001000100000000 00000000 00000000 1100000018 0001001000000000 00000000 01000000 1000000019 0001001100000000 00000000 01000000 1100000020 0001010000000000 01000000 00000000 1000000021 0001010100000000 01000000 00000000 1100000022 0001011000000000 01000000 01000000 1000000023 0001011100000000 01000000 01000000 1100000024 0001100001000000 00000000 00000000 1000000025 0001100101000000 00000000 00000000 1100000026 0001101001000000 00000000 01000000 1000000027 0001101101000000 00000000 01000000 1100000028 0001110001000000 01000000 00000000 1000000029 0001110101000000 01000000 00000000 1100000030 0001111001000000 01000000 01000000 1000000031 0001111101000000 01000000 01000000 1100000032 0010000000000000 00000000 10000000 0000000033 0010000100000000 00000000 10000000 0100000034 0010001000000000 00000000 11000000 0000000035 0010001100000000 00000000 11000000 0100000036 0010010000000000 01000000 10000000 0000000037 0010010100000000 01000000 10000000 0100000038 0010011000000000 01000000 11000000 0000000039 0010011100000000 01000000 11000000 01000000400010100001000000 00000000 10000000 00000000410010100101000000 00000000 10000000 01000000420010101001000000 00000000 11000000 00000000430010101101000000 00000000 11000000 01000000440010110001000000 01000000 10000000 00000000450010110101000000 01000000 10000000 01000000460010111001000000 01000000 11000000 00000000470010111101000000 01000000 11000000 01000000480011000000000000 00000000 10000000 10000000490011000100000000 00000000 10000000 11000000500011001000000000 00000000 11000000 10000000510011001100000000 00000000 11000000 11000000520011010000000000 01000000 10000000 10000000530011010100000000 01000000 10000000 11000000540011011000000000 01000000 11000000 10000000550011011100000000 01000000 11000000 11000000560011100001000000 00000000 10000000 10000000570011100101000000 00000000 10000000 11000000580011101001000000 00000000 11000000 10000000590011101101000000 00000000 11000000 11000000600011110001000000 01000000 10000000 10000000610011110101000000 01000000 10000000 11000000620011111001000000 01000000 11000000 10000000630011111101000000 01000000 11000000 11000000640100000000000000 10000000 00000000 00000000650100000100000000 10000000 00000000 01000000660100001000000000 10000000 01000000 00000000670100001100000000 10000000 01000000 01000000680100010000000000 11000000 00000000 00000000690100010100000000 11000000 00000000 01000000700100011000000000 11000000 01000000 00000000710100011100000000 11000000 01000000 01000000720100100001000000 10000000 00000000 00000000730100100101000000 10000000 00000000 01000000740100101001000000 10000000 01000000 00000000750100101101000000 10000000 01000000 01000000760100110001000000 11000000 00000000 00000000770100110101000000 11000000 00000000 01000000780100111001000000 11000000 01000000 00000000790100111101000000 11000000 01000000 01000000800101000000000000 10000000 00000000 10000000810101000100000000 10000000 00000000 11000000820101001000000000 10000000 01000000 10000000830101001100000000 10000000 01000000 11000000840101010000000000 11000000 00000000 10000000850101010100000000 11000000 00000000 11000000860101011000000000 11000000 01000000 10000000870101011100000000 11000000 01000000 11000000880101100001000000 10000000 00000000 10000000890101100101000000 10000000 00000000 11000000900101101001000000 10000000 01000000 10000000910101101101000000 10000000 01000000 11000000920101110001000000 11000000 00000000 10000000930101110101000000 11000000 00000000 11000000940101111001000000 11000000 01000000 10000000950101111101000000 11000000 01000000 11000000960110000000000000 10000000 10000000 00000000970110000100000000 10000000 10000000 01000000980110001000000000 10000000 11000000 00000000990110001100000000 10000000 11000000 010000001000110010000000000 11000000 10000000 000000001010110010100000000 11000000 10000000 010000001020110011000000000 11000000 11000000 000000001030110011100000000 11000000 11000000 010000001040110100001000000 10000000 10000000 000000001050110100101000000 10000000 10000000 010000001060110101001000000 10000000 11000000 000000001070110101101000000 10000000 11000000 010000001080110110001000000 11000000 10000000 000000001090110110101000000 11000000 10000000 010000001100110111001000000 11000000 11000000 000000001110110111101000000 11000000 11000000 010000001120111000000000000 10000000 10000000 100000001130111000100000000 10000000 10000000 110000001140111001000000000 10000000 11000000 100000001150111001100000000 10000000 11000000 110000001160111010000000000 11000000 10000000 100000001170111010100000000 11000000 10000000 110000001180111011000000000 11000000 11000000 100000001190111011100000000 11000000 11000000 110000001200111100001000000 10000000 10000000 100000001210111100101000000 10000000 10000000 110000001220111101001000000 10000000 11000000 100000001230111101101000000 10000000 11000000 110000001240111110001000000 11000000 10000000 100000001250111110101000000 11000000 10000000 110000001260111111001000000 11000000 11000000 100000001270111111101000000 11000000 11000000 110000001281000000010000000 00000000 00000000 000000001291000000110000000 00000000 00000000 010000001301000001010000000 00000000 01000000 000000001311000001110000000 00000000 01000000 010000001321000010010000000 01000000 00000000 000000001331000010110000000 01000000 00000000 010000001341000011010000000 01000000 01000000 000000001351000011110000000 01000000 01000000 010000001361000100011000000 00000000 00000000 000000001371000100111000000 00000000 00000000 010000001381000101011000000 00000000 01000000 000000001391000101111000000 00000000 01000000 010000001401000110011000000 01000000 00000000 000000001411000110111000000 01000000 00000000 010000001421000111011000000 01000000 01000000 000000001431000111111000000 01000000 01000000 010000001441001000010000000 00000000 00000000 100000001451001000110000000 00000000 00000000 110000001461001001010000000 00000000 01000000 100000001471001001110000000 00000000 01000000 110000001481001010010000000 01000000 00000000 100000001491001010110000000 01000000 00000000 110000001501001011010000000 01000000 01000000 100000001511001011110000000 01000000 01000000 110000001521001100011000000 00000000 00000000 100000001531001100111000000 00000000 00000000 110000001541001101011000000 00000000 01000000 100000001551001101111000000 00000000 01000000 110000001561001110011000000 01000000 00000000 100000001571001110111000000 01000000 00000000 110000001581001111011000000 01000000 01000000 100000001591001111111000000 01000000 01000000 110000001601010000010000000 00000000 10000000 000000001611010000110000000 00000000 10000000 010000001621010001010000000 00000000 11000000 000000001631010001110000000 00000000 11000000 010000001641010010010000000 01000000 10000000 000000001651010010110000000 01000000 10000000 010000001661010011010000000 01000000 11000000 000000001671010011110000000 01000000 11000000 010000001681010100011000000 00000000 10000000 000000001691010100111000000 00000000 10000000 010000001701010101011000000 00000000 11000000 000000001711010101111000000 00000000 11000000 010000001721010110011000000 01000000 10000000 000000001731010110111000000 01000000 10000000 010000001741010111011000000 01000000 11000000 000000001751010111111000000 01000000 11000000 010000001761011000010000000 00000000 10000000 100000001771011000110000000 00000000 10000000 110000001781011001010000000 00000000 11000000 100000001791011001110000000 00000000 11000000 110000001801011010010000000 01000000 10000000 100000001811011010110000000 01000000 10000000 110000001821011011010000000 01000000 11000000 100000001831011011110000000 01000000 11000000 110000001841011100011000000 00000000 10000000 100000001851011100111000000 00000000 10000000 110000001861011101011000000 00000000 11000000 100000001871011101111000000 00000000 11000000 110000001881011110011000000 01000000 10000000 100000001891011110111000000 01000000 10000000 110000001001011111011000000 01000000 11000000 100000001911011111111000000 01000000 11000000 110000001921100000010000000 10000000 00000000 000000001931100000110000000 10000000 00000000 010000001941100001010000000 10000000 01000000 000000001951100001110000000 10000000 01000000 010000001961100010010000000 11000000 00000000 000000001971100010110000000 11000000 00000000 010000001981100011010000000 11000000 01000000 000000001991100011110000000 11000000 01000000 010000002001100100011000000 10000000 00000000 000000002011100100111000000 10000000 00000000 010000002021100101011000000 10000000 01000000 000000002031100101111000000 10000000 01000000 010000002011100110011000000 11000000 00000000 000000002051100110111000000 11000000 00000000 010000002061100111011000000 11000000 01000000 000000002071100111111000000 11000000 01000000 010000002081101000010000000 10000000 00000000 100000002091101000110000000 10000000 00000000 110000002101101001010000000 10000000 01000000 100000002111101001110000000 10000000 01000000 110000002121101010010000000 11000000 00000000 100000002131101010110000000 11000000 00000000 110000002141101011010000000 11000000 01000000 100000002151101011110000000 11000000 01000000 110000002161101100011000000 10000000 00000000 100000002171101100111000000 10000000 00000000 110000002181101101011000000 10000000 01000000 100000002191101101111000000 10000000 01000000 110000002201101110011000000 11000000 00000000 100000002211101110111000000 11000000 00000000 110000002221101111011000000 11000000 01000000 100000002231101111111000000 11000000 01000000 110000002241110000010000000 10000000 10000000 000000002251110000110000000 10000000 10000000 010000002261110001010000000 10000000 11000000 000000002271110001110000000 10000000 11000000 010000002281110010010000000 11000000 10000000 000000002291110010110000000 11000000 10000000 010000002301110011010000000 11000000 11000000 000000002311110011110000000 11000000 11000000 010000002321110100011000000 10000000 10000000 000000002331110100111000000 10000000 10000000 010000002341110101011000000 10000000 11000000 000000002351110101111000000 10000000 11000000 010000002361110110011000000 11000000 10000000 000000002371110110111000000 11000000 10000000 010000002381110111011000000 11000000 11000000 000000002391110111111000000 11000000 11000000 010000002101111000010000000 10000000 10000000 100000002411111000110000000 10000000 10000000 110000002421111001010000000 10000000 11000000 100000002431111001110000000 10000000 11000000 110000002441111010010000000 11000000 10000000 100000002451111010110000000 11000000 10000000 110000002461111011010000000 11000000 11000000 100000002471111011110000000 11000000 11000000 110000002481111100011000000 10000000 10000000 100000002491111100111000000 10000000 10000000 110000002501111101011000000 10000000 11000000 100000002511111101111000000 10000000 11000000 110000002521111110011000000 11000000 10000000 100000002531111110111000000 11000000 10000000 110000002541111111011000000 11000000 11000000 100000002551111111111000000 11000000 11000000 11000000
权利要求
1.在32位操作系统下,一种90°旋转含有8行×8列象素数据位的双态图象数据块的方法,包括下述计算机实现步骤生成一个含有8行×8列象素数据位的中间矩阵,其中该块的各行被分割和平移成一对四位列,横置地排列该块的相隔行,并且在该中间矩阵的该对四位列里该块的较低阶行被置于较高阶行之上;把该中间矩阵的各行顺序地保存到第一和第二32位处理机寄存器里;把该第一32位寄存器复制到第三32位处理机寄存器里和把该第二32位寄存器复制到第四32位处理机寄存器里;沿相反方向把该第一和第二寄存器各移位一位;以及把该第四寄存器的相隔位覆盖到该第一寄存器上和把该第三寄存器的相隔位覆盖到该第二寄存器上。
2.根据权利要求1的方法,其特征在于生成中间矩阵的步骤包括生成一个中间矩阵,在其中相隔的行从右至左横置排列,并且各个被分割行的较高阶位放置在较低阶位的上面。
3.根据权利要求2的方法,其特征在于把该第一和第二寄存器接相反方向各移位一位的步骤包括把该第一寄存器向左移一位和把该第二寄存器向右移一位。
4.根据权利要求3的方法,其特征在于覆盖间隔位的步骤进而包括这些步骤把该第一和第四寄存器的所有奇数位置为零以及把该第二和该第三寄存器的所有偶数位置为零,并且对该第一和该第四寄存器进行逻辑“或”运算以及对该第二和该第三寄存器进行逻辑“或”运算。
5.根据权利要求1的方法,其特征在于生成一个中间矩阵的步骤包括生成一个中间矩阵,其中自左向右横置排列相隔的行,并且各个被分割行的较低阶位放在较高阶位的上面。
6.根据权利要求5的方法,其特征在于把该第一和第二寄存器按相反方向各移位一位的步骤包括把该第一寄存器向右移一位和把该第二寄存器向左移一位。
7.根据权利要求6的方法,其特征在于覆盖间隔位的步骤进一步包括这些步骤把该第一和该第四寄存器的所有偶数位以及把该第二和该第三寄存器的所有奇数位置为零,并且对该第一寄存器和该第四寄存器进行逻辑“或”运算以及对该第二寄存器和该第三寄存器进行逻辑“或”运算。
8.根据权利要求1的方法,其特征在于生成一个中间矩阵的步骤包括为该块的各个奇数行从至少一个查找表里获得第一组4字节值并且动态地把所述第一组4字节值覆盖到该第一32位寄存器上;并且为该块的各个偶数行从所述至少一个查找表里获得第二组4字节值并且动态地把所述第二组4字节值覆盖到该第二32位寄存器上。
9.在32位操作系统下,一种90°旋转双态图象的方法,包括下述计算机实现步骤;a)从该图象数据中选择未旋转的8×8象素矩阵;b)生成一个含有8行×8列象素数据位的中间矩阵,其中该块的各行被分割和平移成一对四位列,横置地排列该块的间隔行,并且在该中间矩阵的该对4位列里较低阶行被置于较高阶行的上面;c)把该中间矩阵的各行顺序地保存到第一和第二32位寄存器里;d)把该第一32位寄存器复制到第三32位寄存器里和把该第二32位寄存器复制到第四32位寄存器里;e)把该第一和该第二寄存器沿相反的方向各移一位;f)把该第四寄存器的间隔位覆盖到该第一寄存器上和把该第三寄存器的间隔位覆盖到该第二寄存器上;以及g)重复a)至f)的步骤,直至完成该图象的旋转。
10.一种用来旋转含有8行×8列象素数据位的双态图象数据块的32位操作系统,包括用于从该块生成一个含有8行×8列象素数据位的中间矩阵的装置,其中该块的各行被分割和平移成一对四位列,横置地排列该块的相隔行,并且在该中间矩阵的该对四位列里该块的较低阶行置于较高阶行之上;至少第一、第二、第三和第四32位处理机寄存器,该第一和该第三寄存器用于重复地保存该中间矩阵的前四行而该第二和该第四寄存器用于重复地保存该中间矩阵的另外四行;把该第一和该第二寄存器沿相反的方向各移一位的装置;以及把该第四寄存器的间隔位覆盖到该第一寄存器上和把该第三寄存器的间隔位覆盖到该第二寄存器上的装置。
11.根据权利要求10的系统,其特征在于该生成一个中间矩阵的装置包括至少一个查找表。
12.根据权利要求11的系统,其特征在于所述至少一个查找表包括多个查找表,每个查找表适用于为该块的至少一行生成一个4字节值。
13.根据权利要求10的系统,其特征在于用来生成一个中间矩阵的装置包括四个查找表,每个查找表适用于为该块的至少两个行生成4字节值;以及用于动态地把该块的间隔行的4字节值覆盖到所述寄存器中的一个上的装置。
全文摘要
正负90°旋转双态图象数据的方法。选出8×8象素块进行旋转,利用查找表动态地生成一个中间矩阵并且存储到处理机的两个32位寄存器里。中间矩阵的生成达到部分的旋转,奇数行存储到第一和第三32位寄存器里,偶数行存储到第二和第四32位寄存器里。第一和第二寄存器沿相反方向移位一位,分别与第四和第三寄存器进行逻辑“或”运算这样偶数位放在一个寄存器里而奇数位放在另一个寄存器里。对所有剩余的图像数据块重复这些步骤。
文档编号G09G5/36GK1121224SQ95103578
公开日1996年4月24日 申请日期1995年3月24日 优先权日1994年4月15日
发明者阿尔伯特·Z·赵 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1