2010-05-06 52 views

回答

0

冗余二进制表示只是形式的表达:

\sum_{i=0}^n d_i 2^n 

其中d_i的从大集合不仅仅是{0,1}绘制。

除以2或右移位需要,为了

\sum_{i=0}^{n-1} d_{i+1} 2^n + f(d_0) 

诀窍进来如何处理调整用于冗余表示为d_0

如果您的RBR有数字的形式{0,1,2}并具有最低显著位,那么你将不得不增加1的结果补偿,所以f(0) = 0f(1) = 0f(2) = 1应该工作2。

  • 4 = 12_base2,所以12_base2 >> 1 = 1 + f(2) = 1 + 1 = 2_base2 = 2如预期。
  • 6 = 102_base2,所以102_base2 >> 1 = 10_base2 + f(2) = 11_base2 = 3

你可以通过设置f(-1) = -1(在{-1,0,1}d_i即)的签署冗余二进制表示类似的东西。

  • 1 = 1(-1)_base2,所以1(-1)_base2 >> 1 = 1 + f(-1) = 1 - 1 = 0

所以最终只是转移天真的方法没有工作,你只需要一个修正因子占平移后的数字的任何冗余编码。

如果您选择的RBR包含更多选项,则需要相应地调整巧妙因子。