记录2 N通用比较树

时间:2010-06-11 16:50:40

标签: algorithm comparison binary-tree

我正在研究冗余二进制表示的算法(RBR),其中每两位代表一个数字。

我设计了比较器,取4位并给出2位。我想在log 2 n中进行比较,所以如果我有X和Y ..我将每2位X与每2位Y进行比较。如果X或Y的位数等于n,则这是平滑的(n = 2 ^ X)即n = 2,4,8,16,32,......等。像这样:

alt text http://www.freeimagehosting.net/uploads/th.a57569d23f.png

然而,如果我的输入让我们说是6或10 ..然后它变得不顺利,我必须考虑到这样的奇怪情况:

alt text http://www.freeimagehosting.net/uploads/th.28bd84300d.png

我对算法有一种浅薄的经验..是否有通用的方法来做到这一点...所以最后我只得到2位而不管输入是什么?

我只需要提示或伪代码。如果我的问题在这里不合适..请随意标记或告诉我删除它。

顺便说一句,我正在使用VHDL!

2 个答案:

答案 0 :(得分:2)

0填充输入的位串,直到它的长度很长,也许?最简单的方法是在比较器中隐式执行此操作:如果作为比较器参数的位数小于4,只需将所有位左移,直到输入字的大小合适为止。

答案 1 :(得分:0)

每次比较都会使您的总位数减少2,所以除非订单因其他原因而重要,否则无论您如何安排比较,都会进行相同数量的比较。