您好!欢迎来到爱源码

爱源码

热门搜索: 抖音快手短视频下载   

二进制取幂算法:快速完成取幂运算。 [源码交易]

  • 时间:2022-11-01 00:09 编辑: 来源: 阅读:307
  • 扫一扫,手机访问
摘要:二进制取幂算法:快速完成取幂运算。 [源码交易]
将幂除以2是计算幂运算的快速方法。 简单的计算方式是乘以倍数,代码如下:int result = 1;for(int I = 0;我!= b;i++)结果* = a;这个需要计算次数,但是真的需要计算那么多次吗?答案是否定的,我们可以用二分幂法让运算次数比次数少很多。 那么什么是二等分幂法呢?我们先考虑一个具体的计算: 首先,我们需要考虑: 这说明我们在计算值的时候,并不需要把计算出来的值乘以16倍。我们只需要乘以一次,大大减少了计算步骤。 如果我们想到了,那么我们自然可以进一步想到,这也大大简化了计算步骤:当我们得到数值时,只需要再乘以一次,而不是连续乘以八次。 如果继续这样推导,可以得到下面的公式:我们可以发现用二进制取幂的方法只需要6次运算就可以得到结果,而在简单的取幂方法中需要32次!但是我们发现了一个问题:32恰好是2的5次方,所以32可以分成两部分直到1。如果失去了这种特殊性,我们还能用二分法寻找权力吗?答案也是肯定的。以计算为例:当我们得到上面的拆分结果后,再计算就容易多了。 当我们得到的值,我们可以得到一次,然后我们可以再次得到它,然后我们可以再次得到它,然后我们可以再次得到它。最后,我们将这些中间结果相乘来计算。 使用二进制取幂,只需要5次运算,而简单取幂需要31次!现在,我们已经充分认识到了二分取幂的强大,但是要想完全掌握这种方法,我们还需要克服一个核心问题——如何正确分解指数,使其满足二分取幂的运算过程(比如上面一对的分解)。 为了一般化,我们可以这样考虑:显然,这样分解的指数满足二分法求幂的运算过程。 因为,在二进制取幂的过程中,从一开始,我们就可以得到:,因此,我们分解出来的属于取幂的序列,也就是指数,等于。看到这里,我们只需要走最后一步——与二进制联想,即可以完全掌握二进制取幂法。 对于任何索引,我们都可以将其转换为二进制形式。这个二进制串中所有取值为1的位置所代表的值就是二进制取幂法所要求的分解结果。 现在,从这样一个角度回过头来看指数以前的二进制形式,这个二进制串中每个1的值从低到高如下:我们可以发现这些值只是分解的结果,也就是说,我们可以很容易地用二等分幂法快速计算出结果。 再分析一个具体的例子:计算值。 指数的二进制形式是,所有位置的值为1所表示的值是:这样,就可以把分解成,然后用二分法求幂。从开始可以乘以一次,再乘以一次,如此类推,直到得到。 在这些中间结果中,对我们有用的是,当我们将它们相乘时,我们可以计算出 从程序运行的角度来看,用二进制取幂运算得到这个结果需要8个周期,但是如果要用简单的取幂算法得到这个结果,需要运行177次!显然,要计算的幂指数越大,平分幂的优势就越明显。 最后简单表达一下如何用编程语言计算:int fun(int a,int b){ int result = 1;while(b){ if(b % 2 = = 1)result * = a;a * = ab/= 2;}返回结果;}参考资料:王道论坛分组。王道论坛上机考试指南[M]。:, 2013.101-105.


  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【技术支持|常见问题】1556原创ng8文章搜索页面不齐(2024-05-01 14:43)
【技术支持|常见问题】1502企业站群-多域名跳转-多模板切换(2024-04-09 12:19)
【技术支持|常见问题】1126完美滑屏版视频只能显示10个(2024-03-29 13:37)
【技术支持|常见问题】响应式自适应代码(2024-03-24 14:23)
【技术支持|常见问题】1126完美滑屏版百度未授权使用地图api怎么办(2024-03-15 07:21)
【技术支持|常见问题】如何集成阿里通信短信接口(2024-02-19 21:48)
【技术支持|常见问题】算命网微信支付宝产品名称年份在哪修改?风水姻缘合婚配对_公司起名占卜八字算命算财运查吉凶源码(2024-01-07 12:27)
【域名/主机/服务器|】帝国CMS安装(2023-08-20 11:31)
【技术支持|常见问题】通过HTTPs测试Mozilla DNS {免费源码}(2022-11-04 10:37)
【技术支持|常见问题】别告诉我你没看过邰方这两则有思想的创意广告! (2022-11-04 10:37)

联系我们
Q Q:375457086
Q Q:526665408
电话:0755-84666665
微信:15999668636
联系客服
企业客服1 企业客服2 联系客服
86-755-84666665
手机版
手机版
扫一扫进手机版
返回顶部