如果没有更大的类型,则要么需要找到一个大整数样式库,要么使用长乘法手动处理它。
例如,假设
a和
b是16位。然后,您可以将它们重写为
a = (1<<8)*aH + aL和,
b = (1<<8)*bH +bL(其中所有单个组件都是8位数字)。然后,您知道总体结果将是:
(a*b) = (1<<16)*aH*bH + (1<<8)*aH*bL + (1<<8)*aL*bH + aL*bL
这4个组件中的每个组件都适合一个16位寄存器。现在,您可以对每个单独的分量执行例如右移操作,请小心处理适当的进位。



