我试图在 C 中将两个 128 位整数相乘。
这是我的算法:
将两个 128 位序列拆分为 S1 和 S2。
然后将 S1 拆分为 S11(前/上半部分)和 S12(后/下半部分),并将 S2 拆分为 S21(前/上半部分)和 S22(后/下半部分)。
将 S12 乘以 S22... = S1222。
将 S11 乘以 S21... = S1121,然后将其乘以 2^128 进行位移
将 S1222 和 S1121 组合成一个新阵列的前半部分和后半部分。我们称它为“Array1”。新数组的长度是 S1 的两倍。
然后我们必须将 S12 乘以 S21 和 S11 乘以 S22。我将这两者相乘,分别得到 S1221 和 S1122(并相应地对它们进行了位移)。现在我必须将它们添加到 Array1。这是我寻求帮助的部分。我不确定如何将这些一一添加到 Array1。请记住,当您从 Array1 的 3/4 到 Array1 的 1/4 时,可能会有进位 1,因为这是需要添加 S1221 和 S1122 的跨度。
我的问题是:如何将 dstM1 和 dstM2 添加到已经填充的数组 d 中?