2010-05-06 181 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包含更多選項,則需要相應地調整巧妙因子。