磁力王上海搜索优化推广哪家强
web/
2025/10/5 16:43:57/
文章来源:
磁力王,上海搜索优化推广哪家强,游戏平台代理,网站免费建站pixiv app2.5我们着重介绍了二进制整数的加、减运算#xff0c;本次我们继续介绍乘、除运算。本章是迄今为止最难的一章#xff0c;希望各位猿友有所收获#xff0c;也别忘了“点个推荐哦”。引言运算一直是程序运行当中一个重要的环节#xff0c;而在二进制的运算过程当中#xff…2.5我们着重介绍了二进制整数的加、减运算本次我们继续介绍乘、除运算。本章是迄今为止最难的一章希望各位猿友有所收获也别忘了“点个推荐哦”。引言运算一直是程序运行当中一个重要的环节而在二进制的运算过程当中加法运算又是重中之重它基本上奠定了二进制运算的基础。因为无论是减法还是乘法都可以由加法运算来替代唯有除法不能由加法替代。了解计算机运算的规律可以有助于我们理解很多程序代码上无法理解的内容。比如上章提到的溢出问题在了解了加法运算的原理之后相信猿友们都可以轻松的知道为何有些运算会得到意想不到的结果。这里还需要提一点的是不同的处理器所采取的运算方式可能是有细微的差别的因此也不能一概而论。因此我们大多时候会尽量讨论运算的抽象数学特性抽象的东西大部分时候总是可靠的这种特性为跨平台提供了基础不过也并非总是如此毕竟LZ只听说过浮点数运算标准还没听说过整数运算标准不知道究竟是LZ孤陋寡闻了还是确无此物。正因如此我们了解一下这些运算的抽象性会有助于我们理解程序代码级无法理解的东西。无符号乘法无符号的乘法与加法类似它的运算方式是比较简单的只是也可能产生溢出。对于两个w位的无符号数来说它们的乘积范围在0到(2w-1)2之间因此可能需要2w位二进制才能表示。因此由于位数的限制假设两个w位的无符号数的真实乘积为pro根据截断的规则则实际得到的乘积为 pro mod 2w。补码乘法与加法运算类似补码乘法也是建立在无符号的基础之上的因此我们可以很容易的得到对于两个w位的补码数来说假设它们的真实乘积为pro则实际得到的乘积为 U2Tw(pro mod 2w)。上面的式子我们有一个假设就是假设对于w位的两个补码数来说它们的乘积的低w位与无符号数乘积的低w位是一样的。这意味着计算机可以使用一个指令执行无符号和补码的乘法运算。在书中给出了这一过程的证明我们来大概看一下这里主要应用了无符号编码和补码编码的关系其中x’和y’分别代表x和y的补码编码。这里运用的主要技巧就是2w mod 2w 0。乘法运算的优化根据我们小学所学的乘法运算我们知道假设两个w位的二进制数相乘则需要进行w次与运算然后进行w - 1次加法运算才能得到结果。从此不难看出乘法运算的时间周期是很长的。因此计算机界的高手们想出了一种方式可以优化乘法运算的效率就是使用移位和加法来替代乘法。上述优化的前提是对于一个w位的二进制数来说它与2k的乘积等同于这个二进制数左移k位在低位补k个0。在书中对这一等式进行了证明过程如下。这个过程主要应用了无符号编码的公式各位猿友应该不难看懂。有了上面的基础我们就可以使用移位和加法对乘法优化了。对于任意一个整数y它总能使用二进制序列表示(假设不超过二进制的表示范围)因此我们可以将x和y乘积的二进制序列表示为如下形式(此公式在书中没有展现)。x * y x * (yw-12w-1 ... y020) (x w-1) * yw-1 .... (x 0 ) * y0我们举个例子对于x * 17我们可以计算x * 16 x (x 4) x 这样算下来的话我们只需要一次移位一次加法就可以搞定这个乘法运算。而对于x * 14则可以计算 x * 8 x * 4 x * 2 (x 3) (x 2) (x 1) 更快的方式我们可以这么计算x * 16 - x * 2 (x 4) - (x 1) 。这里最后需要提一下的是加法、减法和移位的速度并不会总快于乘法运算因此是否要进行上面的优化就取决于二者的速度了。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87460.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!