二进制有符号数字除以2(冗余二进制表示)

时间:2010-05-06 12:45:22

标签: binary hardware vhdl

如何在二进制有符号数字(冗余二进制表示)中除以2?转移不会正常工作?

1 个答案:

答案 0 :(得分: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},且最低有效数字为2,那么您必须将1添加到结果中以进行补偿,因此f(0) = 0,{{ 1}},f(1) = 0应该有用。

  • f(2) = 1,所以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为签名的冗余二进制表示形式(即d_i中的{-1,0,1})获得类似的内容。

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

所以最终只是转移的天真方法确实有效,你只需要一个软糖因子来解释移位数字的任何冗余编码。

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