热门

最新

红包

立Flag

投票

同城

我的

发布
mrxdj2000
囫囵吞桃
2 年前
truemrxdj2000

《C/CPP快速幂》
b%2==1可以替换为b&1==1,即将二进制数最低位与1作与运算,当且仅当同为1时为真,由于该式子的结果不是1就是0,所以也可以直接把“==1”去掉。如:3的五次方可以如上图展开原本可能要执行5次循环的运算(或使用泰勒展开进行更复杂的运算),可以把指数按二进制展开来简化运算。可以用b%2==1和b/=2来实现(还记得如何把一个数从个位到最高位依次输出吗?而b/=2可以替换为b>>=1即把二进制数整体向右移一位,多出来的位补0(即相当于/=2)如果是1,就把p*=a,并把a*=a以预备下一次运算。
——来自博客
https://blog.csdn.net/mrxdj2000/article/details/136954000

你是否会在自己的代码中使用“快速幂”(单选)
0 人已经参与 已结束
会的
0人
不会
0人
CSDN App 扫码分享
分享
评论
点赞
  • 复制链接
  • 举报
下一条:
工业软件SAP行业前途和待遇
立即登录