请简述逐步乘k取整法法的基本原理

格式:DOC ? 页数:3页 ? 上传日期: 05:20:19 ? 浏览次数:10 ? ? 1000积分 ? ? 用稻壳阅读器打开

全文阅读已结束如果下载本文需要使用

该用户还上传了这些文档

对于有符号数先乘 2 / 3,将 2 / 3 左移 31 位留最高位表示符号位,为 h(魔法数)与原数 imul,则直接取 edx 即为答案

为何要乘 2 / 3 直接得答案呢?

先查对于无符号数乘 2 / 3,将 2 / 3 左移 32 位为 0AAAAAAABh。與原数 mul 之后需要右移 32 位回,但由于汇编乘法规则直接取用 edx 即可。由于乘 2 / 3则将 edx 右移 1 位才是结果。

对于有符号数来说由于需要右移 31 位,并再右移 1 位以抵消 2 / 3 成为 1 / 3而直接取用 edx 刚好完成了右移 32 位(也就是说 eax 的 32 位是没用的)。这也即为何除 3 要乘 2 / 3 的原因

通过左移右移的操作,使得除整数变为乘小数左移之成为乘整数(近似值),从而达到优化计算的目的

关于印发《中央部门预算绩效目標管理办法》的通知财预〔2015〕88号.doc

我要回帖

更多关于 乘k取整法 的文章

 

随机推荐