Oli*_*rth 13
如果没有更大的类型,您将需要找到一个big-int样式库,或者使用long multiplication手动处理它.
例如,假设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
Run Code Online (Sandbox Code Playgroud)
这4个组件中的每一个都适合16位寄存器.您现在可以对每个单独的组件执行例如右移,小心处理适当的进位.