在修改的展位算法中,将额外的0添加到LSB中是什么?



我试图找到这个问题的答案,但是唯一的其他线程并没有提供我希望的那么多细节。

为什么在修改的展位算法中需要LSB的额外0?

它到底是什么,为什么需要是0而不是1?

我知道您在radix-4修改的展位算法(或一般IIRC(中的输入需要均匀数量。

,但是添加的0不能只有在那里,以便我们有一个可以将3,对3,对

假设我们必须乘以 a× b ,其中 b =(b n-1 ... b 1 b 0 (
展位在其标准版本或修改版本中,通过重写术语 b i

来工作

让我们看一下更简单的标准展位。
如果 b b 不变的 value ,重写是正确的。
如果 b 在两个补充中编码,则其价值为
b =&minus; b n-1 &times; 2 n-1 &sum; <sub;> i = 0 n-n-1 b i &times; 2 i
请注意,由于两人的补充编码,重量 n-1 的负重。

现在,重写包括将每个 b i 更改为 b' i = b i &减去; b i-1
如果我们现在说
b =&sum; i = 0 n-1 b' i &times; 2 i em>
通过替换 b' i b i &minus; b i-1 ,很容易看到在这种表达中, b 的值是不变的,只要对于 i = 0 ,我们添加了额外的位 b i--1 = 0

当然,我们可以为 i = 0
添加一个特殊规则如果 i&ne; 0 b' i = b i &minus; b i-1 em>
否则 b' i = b i
但是,展位算法的主要初始动机是通过正则表达式替换两个n-1 n-1 的特定情况。独立于 i
的确,在设计电路时,仅复制操作员要比必须根据位位置考虑特定条件要容易得多。因此,最好的解决方案是在LSB上添加额外的位置。

对于修改的展位,情况相似。
我们尝试用数字重写 b b'' 2i
的方式 b =&sum; i = 0 n/2-1 b''' 2i &times; 2 2i
重写的基础为4,表达式更为复杂,要生成数字 b'''我们需要考虑到BITS B 2i 1 ,B 2i 和B 2i-1 。

这是相应的真实表。

b_2i+1    b_2i    b_2i-1   |    b''_2i
-----------------------------------
0         0       0        |    0
0         0       1        |    1
0         1       0        |    1
0         1       1        |    2
1         0       0        |   -2
1         0       1        |   -1
1         1       0        |   -1
1         1       1        |    0

可以证明,这种方式, b 的数值不变,提供了我们在重量-1 b -1 = 0 。实际上, b'' 2i =&minus; 2&times; b 2i 1 b 2i b b 2i-1,如果表达式 b =&sum; i = 0 n/2-1 b''' 2i&times; 2 2i 在两者的补充中找到 b 的值。
同样,我们可以以不同的方式考虑 i = 0 的情况,并说 b'' 0 =&minus; 2&times; b 1 b 0 ,但这会增加额外的复杂性。

所以回答您的问题:

谁能告诉我为什么在修改的展位算法中需要LSB的额外0?

此额外的一点简化了重写算法,并避免在 i = 0

时要处理特定情况。

它到底是什么,为什么需要是0而不是1?

如果这个位是一个,我们将无法在重写后具有不变的值。这对于确保乘法算法的正确性至关重要。

相关内容

  • 没有找到相关文章

最新更新