專利名稱:二進(jìn)制數(shù)據(jù)的比較及排序方法
技術(shù)領(lǐng)域:
本發(fā)明為關(guān)于 一種二進(jìn)制(Binary)數(shù)據(jù)的比較及排序方法。
背景技術(shù):
比較器通常比較兩個(gè)或更多的輸入值。例如,如果A值及B值進(jìn)行比較, 則比較器得到A-B值。如果A-B大于或等于O,也就是等于正值或O,則表 示A大于或等于B;否則A小于B。這種比較器的硬件構(gòu)造簡(jiǎn)單,僅需一減 法器搭配一些數(shù)字元件。
然而,如果需要在許多輸入值中決定最大值時(shí),基于上述方法的傳統(tǒng)二 進(jìn)制樹(shù)(Binary Tree)或氣泡排序(Bubble sort)法需要大量計(jì)算以得到所需結(jié) 果。因此,這些傳統(tǒng)方法對(duì)于二進(jìn)制數(shù)據(jù)比較(尤其當(dāng)處理許多二進(jìn)制數(shù)據(jù)) 時(shí)并非十分有效。
發(fā)明內(nèi)容
本發(fā)明為提供二進(jìn)制數(shù)據(jù)的比較及排序方法,由此降低比較的復(fù)雜度且 增加計(jì)算速度以處理大量的二進(jìn)制數(shù)據(jù)。另外,本發(fā)明設(shè)計(jì)上硬件面積可減
少,且可輕易應(yīng)用VLSI設(shè)計(jì)。
根據(jù)本發(fā)明的二進(jìn)制數(shù)據(jù)的比較方法,首先,提供多個(gè)二進(jìn)制數(shù)據(jù)的比 特(bits),且將多個(gè)二進(jìn)制數(shù)據(jù)的比特bitx相加,其中x=n,n-l,..., 1或0, bit n代表最高有效比特(Most Significant Bit; MSB)。如果相加值等于1,則具有 bitx=l的二進(jìn)制數(shù)據(jù)為最大。如果相加值大于或等于2,則具有bitx^0的二 進(jìn)制數(shù)據(jù)通過(guò)將該二進(jìn)制數(shù)據(jù)所有比特設(shè)為0加以掩碼(masked)。上述的步 驟進(jìn)行重復(fù),其中如果相加值不等于1 ,則bitx由bitx-l進(jìn)行迭代直到找出 最大者為止。
同樣概念可應(yīng)用于找出二進(jìn)制數(shù)據(jù)中的最小者。首先,求出多個(gè)二進(jìn)制 數(shù)據(jù)的補(bǔ)數(shù)(Complement),且該補(bǔ)數(shù)進(jìn)行上述比較步驟找出最大者。相應(yīng)于 該4卜數(shù)最大者的二進(jìn)制數(shù)據(jù)即為該多個(gè)二進(jìn)制數(shù)據(jù)的最小者。根據(jù)上述二進(jìn)制數(shù)據(jù)的比較方法,本發(fā)明還公開(kāi) 一種二進(jìn)制數(shù)據(jù)的排序 方法。首先,根據(jù)上述二進(jìn)制數(shù)據(jù)比較方法在多個(gè)二進(jìn)制數(shù)據(jù)中找出最大者。
該最大的二進(jìn)制數(shù)據(jù)賦予第一序位(first rank)且加以掩碼(也就是設(shè)為0)。重 復(fù)上述的步驟,將最大者賦予一次序位(nextrank)直到所有的二進(jìn)制數(shù)據(jù)均賦 予序位為止。
圖1為本發(fā)明實(shí)施例的多個(gè)二進(jìn)制數(shù)據(jù)的比特示意圖; 圖2為本發(fā)明實(shí)施例的二進(jìn)制數(shù)據(jù)比較方法的流程圖; 圖3和4為本發(fā)明實(shí)施例的二進(jìn)制數(shù)據(jù)排序方法的流程圖。
具體實(shí)施例方式
如圖l所示,示出各二進(jìn)制數(shù)據(jù)AO、 Al、 ...、 Am的比特(由bit0至bit n),其可儲(chǔ)存在寄存器中,而bitn為MSB, bit 0為L(zhǎng)SB(最低有效單元)。比 較A0、 Al、 ...、 Am大小的流程圖如圖2所示。
A0、 Al、 ...、 Am的bitn如下式進(jìn)行相力口
SUM n=A0(bit n)+Al(bit n)+A2(bit n)+...十Am(bit n)
如果SUM論2,表示至少有二個(gè)二進(jìn)制數(shù)據(jù)的bitn等于1。因?yàn)閎itn為 MSB,所以最大二進(jìn)制數(shù)據(jù)必定選自這兩個(gè)或兩個(gè)以上的二進(jìn)制數(shù)據(jù)。因?yàn)?其他的二進(jìn)制數(shù)據(jù)不可能為最大者,所以其他的二進(jìn)制數(shù)據(jù)可進(jìn)行"掩碼",
也就是將其他的二進(jìn)制數(shù)據(jù)在隨后找出最大二進(jìn)制數(shù)據(jù)程序時(shí)不加以考慮。 "掩碼"操作如下式
A0= A0(bit n) AND {A0(bitn), A0(bitn-1),…,A0(bit 0)}
如果A0(bit n)=0,則AO將重設(shè)為0。相反地,如果AO(bit n)=l,則AO
不進(jìn)行改變。因此,如果AO(bit n)=0,則AO在隨后找出最大二進(jìn)制數(shù)據(jù)程
序時(shí)不進(jìn)行考慮。
如果SUMn〈2,則檢查SUMn是否等于0。如果SUMn^0, SUMn=l, 則其表示只有一個(gè)二進(jìn)制數(shù)據(jù)的bitn=l。因此,具有bitn-l的二進(jìn)制數(shù)據(jù)為 最大的二進(jìn)制數(shù)據(jù),從而停止找出最大者之程序。
如果SUM n=0,則表示所有的二進(jìn)制數(shù)據(jù)的bit n等于0,使得目前的二 進(jìn)制數(shù)據(jù)的bit n無(wú)法提供判斷信息。因此,將進(jìn)一步檢查二進(jìn)制數(shù)據(jù)的比特bitn-l。
同樣地,A0、 Al、 ...、 Am的bitn-l如下式進(jìn)行相加: SUM n-1 =A0(bit n-1 )+A 1 (bit n-1 )+A2(bit n陽(yáng)1)+…十Am(bit n-1) 之后,檢查SUMn-1是等于0、 l或大于等于2,并重復(fù)上述對(duì)于SUMn 所進(jìn)行的步驟。
據(jù)此,在重復(fù)對(duì)SUMn、 SUMn-l、 SUM n-2、 ...、 SUM 0等檢查步驟 后,可找出最大的二進(jìn)制數(shù)據(jù)。過(guò)程中,如果相加值SUM等于1,則將停止 比較步驟。
以上敘述關(guān)于找出二進(jìn)制數(shù)據(jù)中的最大者。實(shí)際應(yīng)用中,類似的程序也 可用來(lái)找出最小的二進(jìn)制數(shù)據(jù)。
首先,多個(gè)二進(jìn)制數(shù)據(jù)求出其#卜數(shù)(例如進(jìn)行1 's complement)。換句話說(shuō), 該二進(jìn)制數(shù)據(jù)的比特值反轉(zhuǎn),即O變成l, l變成O,而補(bǔ)數(shù)為相應(yīng)二進(jìn)制數(shù) 據(jù)的負(fù)值。之后,根據(jù)上述比較步驟找出補(bǔ)數(shù)的最大者。相應(yīng)于該補(bǔ)數(shù)最大 者的二進(jìn)制數(shù)據(jù)即為該多個(gè)二進(jìn)制數(shù)據(jù)的最小者。
另夕卜,上述找出最大二進(jìn)制數(shù)據(jù)的程序可結(jié)合用于該二進(jìn)制數(shù)據(jù)的排序。 如圖3及4所示,當(dāng)根據(jù)上述方法找出最大的二進(jìn)制數(shù)據(jù)后,標(biāo)記第一最大 標(biāo)志于該最大的二進(jìn)制數(shù)據(jù),且該最大的二進(jìn)制數(shù)據(jù)加以掩碼,即設(shè)為0, 以省去后續(xù)再次考慮該最大的二進(jìn)制數(shù)據(jù)。該最大的二進(jìn)制數(shù)據(jù)賦予第一序 位。之后,重復(fù)上述程序以找出其他最大的二進(jìn)制數(shù)據(jù),并依序標(biāo)記第二、
第三.....第m最大標(biāo)志。如此一來(lái),該多個(gè)二進(jìn)制數(shù)據(jù)可根據(jù)該第一、第
二、第三.....第m最大標(biāo)志的順序進(jìn)行排序。換句話說(shuō),陸續(xù)找出最大的
二進(jìn)制數(shù)據(jù)以決定第二、第三、第四序位...,直到所有的二進(jìn)制數(shù)據(jù)都賦予 序位為止。
本發(fā)明的技術(shù)內(nèi)容及技術(shù)特點(diǎn)已公開(kāi)如上,然而本領(lǐng)域技術(shù)人員仍可能 基于本發(fā)明的教導(dǎo)及公開(kāi)而進(jìn)行各種不背離本發(fā)明精神的替換及修改。因此, 本發(fā)明的保護(hù)范圍應(yīng)不限于實(shí)施例所公開(kāi)的,而應(yīng)包括各種不背離本發(fā)明的 替換及修改,并為權(quán)利要求的范圍所涵蓋。
權(quán)利要求
1.一種二進(jìn)制數(shù)據(jù)比較方法,包含以下步驟(a)提供多個(gè)二進(jìn)制數(shù)據(jù)的比特;(b)相加該多個(gè)二進(jìn)制數(shù)據(jù)的比特bit x,其中x=n,n-1,...,1或0,bit n代表最高有效比特;(c)如果相加值等于1,則將具有bit x=1的二進(jìn)制數(shù)據(jù)作為最大者;(d)如果相加值大于或等于2,則具有bit x=0的二進(jìn)制數(shù)據(jù)通過(guò)將該二進(jìn)制數(shù)據(jù)所有比特設(shè)為0加以掩碼;以及(e)重復(fù)步驟(b)至(d),其中如果相加值不等于1,則bit x由bit x-1進(jìn)行迭代直到找出最大者為止。
2. 根據(jù)權(quán)利要求1的二進(jìn)制數(shù)據(jù)比較方法,其中如果相加值等于0,則 所有的bitx等于O,表示無(wú)法找出最大者,接著進(jìn)行步驟(e)。
3.
4. 根據(jù)權(quán)利要求1的二進(jìn)制數(shù)據(jù)比較方法,其中如果相加值大于或等于 2,至少兩個(gè)bitx等于l,表示無(wú)法找出最大者,將具有bit x=0的二進(jìn)制數(shù) 據(jù)的所有比特設(shè)為0,接著進(jìn)行步驟(e)。
5. —種二進(jìn)制數(shù)據(jù)比較方法,包含以下步驟(a) 提供多個(gè)二進(jìn)制數(shù)據(jù)的比特;(b) 求得該多個(gè)二進(jìn)制數(shù)據(jù)的補(bǔ)數(shù);(c) 相加該多個(gè)補(bǔ)數(shù)的比特bitx,其中x=n, n-l,..., 1或0, bitn代表最高 有效比特;(d) 如果相加值等于1,則將具有bitx^的補(bǔ)數(shù)作為最大者;(e) 如果相加值大于或等于2,則具有bitx=0的補(bǔ)數(shù)通過(guò)將該補(bǔ)數(shù)所有比 特設(shè)為O加以掩碼;(f) 重復(fù)步驟(c)至(e),其中如果相加值不等于1,則bitx由bitx-l進(jìn)行迭 代直到找出最大者為止;以及(g) 將相應(yīng)于該補(bǔ)數(shù)最大者的二進(jìn)制數(shù)據(jù)作為該多個(gè)二進(jìn)制數(shù)據(jù)的最小者。
6. 根據(jù)權(quán)利要求5的二進(jìn)制數(shù)據(jù)比較方法,其中如果相加值等于O,則所有的bitx等于0,表示無(wú)法找出最大者,接著進(jìn)行步驟(f)。
7. 根據(jù)權(quán)利要求5的二進(jìn)制數(shù)據(jù)比較方法,其中如果相加值等于l,則 一個(gè)bitx等于l,表示找出最大者,將具有bitx-l的補(bǔ)數(shù)作為最大者。
8. 根據(jù)權(quán)利要求5的二進(jìn)制數(shù)據(jù)比較方法,其中如果相加值大于或等于 2,則至少兩個(gè)bit x等于1,表示無(wú)法找出最大者,將具有bitx二O的補(bǔ)數(shù)的 所有比特設(shè)為O,接著進(jìn)行步驟(f)。
9. 一種二進(jìn)制數(shù)據(jù)排序方法,包含下列步驟(a) 在多個(gè)二進(jìn)制數(shù)據(jù)中找出最大的二進(jìn)制數(shù)據(jù);(b) 將該最大的二進(jìn)制數(shù)據(jù)賦予第 一序位,并掩碼該最大的二進(jìn)制數(shù)據(jù);(c) 重復(fù)步驟(a)及(b),并將最大的二進(jìn)制數(shù)據(jù)賦予一次序位直到所有的多 個(gè)二進(jìn)制數(shù)據(jù)均賦予序位為止。
10. 根據(jù)權(quán)利要求9的二進(jìn)制數(shù)據(jù)排序方法,其中在多個(gè)二進(jìn)制數(shù)據(jù)中 找出最大的二進(jìn)制數(shù)據(jù)的步驟為根據(jù)權(quán)利要求1的二進(jìn)制數(shù)據(jù)比較方法。
全文摘要
本發(fā)明的二進(jìn)制數(shù)據(jù)的比較方法執(zhí)行如下首先,提供多個(gè)二進(jìn)制數(shù)據(jù)的比特(bits),且將多個(gè)二進(jìn)制數(shù)據(jù)的比特bit x相加,其中x=n,n-1,...,1或0,bit n代表最高有效比特(Most Significant Bit;MSB)。如果相加值等于1,則具有bit x=1的二進(jìn)制數(shù)據(jù)為最大。如果相加值大于或等于2,則具有bit x=0的二進(jìn)制數(shù)據(jù)通過(guò)將該二進(jìn)制數(shù)據(jù)所有比特設(shè)為0加以掩碼(masked)。上述步驟進(jìn)行重復(fù),其中如果相加值不等于1,則bit x由bit x-1進(jìn)行迭代直到找出最大者為止。
文檔編號(hào)G06F7/06GK101308452SQ20081008764
公開(kāi)日2008年11月19日 申請(qǐng)日期2008年3月25日 優(yōu)先權(quán)日2007年5月15日
發(fā)明者林宏熾 申請(qǐng)人:奇景光電股份有限公司