二进制数据的比较及排序方法

文档序号:6461880阅读:3390来源:国知局
专利名称:二进制数据的比较及排序方法
技术领域
本发明为关于 一种二进制(Binary)数据的比较及排序方法。
背景技术
比较器通常比较两个或更多的输入值。例如,如果A值及B值进行比较, 则比较器得到A-B值。如果A-B大于或等于O,也就是等于正值或O,则表 示A大于或等于B;否则A小于B。这种比较器的硬件构造简单,仅需一减 法器搭配一些数字元件。
然而,如果需要在许多输入值中决定最大值时,基于上述方法的传统二 进制树(Binary Tree)或气泡排序(Bubble sort)法需要大量计算以得到所需结 果。因此,这些传统方法对于二进制数据比较(尤其当处理许多二进制数据) 时并非十分有效。

发明内容
本发明为提供二进制数据的比较及排序方法,由此降低比较的复杂度且 增加计算速度以处理大量的二进制数据。另外,本发明设计上硬件面积可减
少,且可轻易应用VLSI设计。
根据本发明的二进制数据的比较方法,首先,提供多个二进制数据的比 特(bits),且将多个二进制数据的比特bitx相加,其中x=n,n-l,..., 1或0, bit n代表最高有效比特(Most Significant Bit; MSB)。如果相加值等于1,则具有 bitx=l的二进制数据为最大。如果相加值大于或等于2,则具有bitx^0的二 进制数据通过将该二进制数据所有比特设为0加以掩码(masked)。上述的步 骤进行重复,其中如果相加值不等于1 ,则bitx由bitx-l进行迭代直到找出 最大者为止。
同样概念可应用于找出二进制数据中的最小者。首先,求出多个二进制 数据的补数(Complement),且该补数进行上述比较步骤找出最大者。相应于 该4卜数最大者的二进制数据即为该多个二进制数据的最小者。根据上述二进制数据的比较方法,本发明还公开 一种二进制数据的排序 方法。首先,根据上述二进制数据比较方法在多个二进制数据中找出最大者。
该最大的二进制数据赋予第一序位(first rank)且加以掩码(也就是设为0)。重 复上述的步骤,将最大者赋予一次序位(nextrank)直到所有的二进制数据均赋 予序位为止。


图1为本发明实施例的多个二进制数据的比特示意图; 图2为本发明实施例的二进制数据比较方法的流程图; 图3和4为本发明实施例的二进制数据排序方法的流程图。
具体实施例方式
如图l所示,示出各二进制数据AO、 Al、 ...、 Am的比特(由bit0至bit n),其可储存在寄存器中,而bitn为MSB, bit 0为LSB(最低有效单元)。比 较A0、 Al、 ...、 Am大小的流程图如图2所示。
A0、 Al、 ...、 Am的bitn如下式进行相力口
SUM n=A0(bit n)+Al(bit n)+A2(bit n)+...十Am(bit n)
如果SUM论2,表示至少有二个二进制数据的bitn等于1。因为bitn为 MSB,所以最大二进制数据必定选自这两个或两个以上的二进制数据。因为 其他的二进制数据不可能为最大者,所以其他的二进制数据可进行"掩码",
也就是将其他的二进制数据在随后找出最大二进制数据程序时不加以考虑。 "掩码"操作如下式
A0= A0(bit n) AND {A0(bitn), A0(bitn-1),…,A0(bit 0)}
如果A0(bit n)=0,则AO将重设为0。相反地,如果AO(bit n)=l,则AO
不进行改变。因此,如果AO(bit n)=0,则AO在随后找出最大二进制数据程
序时不进行考虑。
如果SUMn〈2,则检查SUMn是否等于0。如果SUMn^0, SUMn=l, 则其表示只有一个二进制数据的bitn=l。因此,具有bitn-l的二进制数据为 最大的二进制数据,从而停止找出最大者之程序。
如果SUM n=0,则表示所有的二进制数据的bit n等于0,使得目前的二 进制数据的bit n无法提供判断信息。因此,将进一步检查二进制数据的比特bitn-l。
同样地,A0、 Al、 ...、 Am的bitn-l如下式进行相加: SUM n-1 =A0(bit n-1 )+A 1 (bit n-1 )+A2(bit n陽1)+…十Am(bit n-1) 之后,检查SUMn-1是等于0、 l或大于等于2,并重复上述对于SUMn 所进行的步骤。
据此,在重复对SUMn、 SUMn-l、 SUM n-2、 ...、 SUM 0等检查步骤 后,可找出最大的二进制数据。过程中,如果相加值SUM等于1,则将停止 比较步骤。
以上叙述关于找出二进制数据中的最大者。实际应用中,类似的程序也 可用来找出最小的二进制数据。
首先,多个二进制数据求出其#卜数(例如进行1 's complement)。换句话说, 该二进制数据的比特值反转,即O变成l, l变成O,而补数为相应二进制数 据的负值。之后,根据上述比较步骤找出补数的最大者。相应于该补数最大 者的二进制数据即为该多个二进制数据的最小者。
另夕卜,上述找出最大二进制数据的程序可结合用于该二进制数据的排序。 如图3及4所示,当根据上述方法找出最大的二进制数据后,标记第一最大 标志于该最大的二进制数据,且该最大的二进制数据加以掩码,即设为0, 以省去后续再次考虑该最大的二进制数据。该最大的二进制数据赋予第一序 位。之后,重复上述程序以找出其他最大的二进制数据,并依序标记第二、
第三.....第m最大标志。如此一来,该多个二进制数据可根据该第一、第
二、第三.....第m最大标志的顺序进行排序。换句话说,陆续找出最大的
二进制数据以决定第二、第三、第四序位...,直到所有的二进制数据都赋予 序位为止。
本发明的技术内容及技术特点已公开如上,然而本领域技术人员仍可能 基于本发明的教导及公开而进行各种不背离本发明精神的替换及修改。因此, 本发明的保护范围应不限于实施例所公开的,而应包括各种不背离本发明的 替换及修改,并为权利要求的范围所涵盖。
权利要求
1.一种二进制数据比较方法,包含以下步骤(a)提供多个二进制数据的比特;(b)相加该多个二进制数据的比特bit x,其中x=n,n-1,...,1或0,bit n代表最高有效比特;(c)如果相加值等于1,则将具有bit x=1的二进制数据作为最大者;(d)如果相加值大于或等于2,则具有bit x=0的二进制数据通过将该二进制数据所有比特设为0加以掩码;以及(e)重复步骤(b)至(d),其中如果相加值不等于1,则bit x由bit x-1进行迭代直到找出最大者为止。
2. 根据权利要求1的二进制数据比较方法,其中如果相加值等于0,则 所有的bitx等于O,表示无法找出最大者,接着进行步骤(e)。
3.
4. 根据权利要求1的二进制数据比较方法,其中如果相加值大于或等于 2,至少两个bitx等于l,表示无法找出最大者,将具有bit x=0的二进制数 据的所有比特设为0,接着进行步骤(e)。
5. —种二进制数据比较方法,包含以下步骤(a) 提供多个二进制数据的比特;(b) 求得该多个二进制数据的补数;(c) 相加该多个补数的比特bitx,其中x=n, n-l,..., 1或0, bitn代表最高 有效比特;(d) 如果相加值等于1,则将具有bitx^的补数作为最大者;(e) 如果相加值大于或等于2,则具有bitx=0的补数通过将该补数所有比 特设为O加以掩码;(f) 重复步骤(c)至(e),其中如果相加值不等于1,则bitx由bitx-l进行迭 代直到找出最大者为止;以及(g) 将相应于该补数最大者的二进制数据作为该多个二进制数据的最小者。
6. 根据权利要求5的二进制数据比较方法,其中如果相加值等于O,则所有的bitx等于0,表示无法找出最大者,接着进行步骤(f)。
7. 根据权利要求5的二进制数据比较方法,其中如果相加值等于l,则 一个bitx等于l,表示找出最大者,将具有bitx-l的补数作为最大者。
8. 根据权利要求5的二进制数据比较方法,其中如果相加值大于或等于 2,则至少两个bit x等于1,表示无法找出最大者,将具有bitx二O的补数的 所有比特设为O,接着进行步骤(f)。
9. 一种二进制数据排序方法,包含下列步骤(a) 在多个二进制数据中找出最大的二进制数据;(b) 将该最大的二进制数据赋予第 一序位,并掩码该最大的二进制数据;(c) 重复步骤(a)及(b),并将最大的二进制数据赋予一次序位直到所有的多 个二进制数据均赋予序位为止。
10. 根据权利要求9的二进制数据排序方法,其中在多个二进制数据中 找出最大的二进制数据的步骤为根据权利要求1的二进制数据比较方法。
全文摘要
本发明的二进制数据的比较方法执行如下首先,提供多个二进制数据的比特(bits),且将多个二进制数据的比特bit x相加,其中x=n,n-1,...,1或0,bit n代表最高有效比特(Most Significant Bit;MSB)。如果相加值等于1,则具有bit x=1的二进制数据为最大。如果相加值大于或等于2,则具有bit x=0的二进制数据通过将该二进制数据所有比特设为0加以掩码(masked)。上述步骤进行重复,其中如果相加值不等于1,则bit x由bit x-1进行迭代直到找出最大者为止。
文档编号G06F7/06GK101308452SQ20081008764
公开日2008年11月19日 申请日期2008年3月25日 优先权日2007年5月15日
发明者林宏炽 申请人:奇景光电股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1