模加法与乘法的原理及算法解析
1. 模加法相关内容
在模运算中,对于模为 (2^n + 1) 的减量 - 1 加法,其硬件实现比通用模加法器更快且成本更低。然而,总体而言,减量 - 1 表示法及其算术运算的实际价值存疑。这是因为在该表示法与其他表示法之间进行转换时,需要进行全进位传播的加法和减法操作。只有当需要进行大量计算,并且中间操作数保持相同形式,从而能够分摊转换的“一次性”成本时,这种转换才是值得的。但这种情况并不常见,所以尽管对其进行了大量研究,减量 - 1 表示法在实际应用中却很少被使用。因此,在加法运算的讨论中,我们不再进一步考虑这种表示法。
由此我们可以得出结论,专门为模 (2^n + 1) 设计加法单元可能价值不大。不过,在某些特定情况下,模 ((2^n + 1)) 乘法可能是个例外,后续会对此进行讨论。
2. 模减法
给定 (x) 和 (y),满足 (0 \leq x, y < m),根据余数减法的定义,计算 ((x - y) \bmod m) 可以先计算 (y) 的加法逆元(即 (m - y)),然后再加上 (x)(模 (m))。这种方法需要进行三次加法运算:一次计算 (m - y),一次加上 (x),还有一次(减法)用于修正超过模的初始结果。
一种更好的方法是按照以下公式计算:
((x - y) \bmod m = \begin{cases} x - y, & \text{if } x - y \geq 0 \ x - y + m, & \text{otherwise} \end{cases})
这个公式与之前的公式类似,但算术运算相反。区分两种情况的条件也有所改
超级会员免费看
订阅专栏 解锁全文
767

被折叠的 条评论
为什么被折叠?



