目录

源代码

解析代码(比如计算 3^19)

其中涉及到的知识点

按位与 &

移位运算 [ 右移(>>)为例 ]


源代码

long long ksm(long long a, long long k) // a代表底数,k代表指数
{long long res = 1;while (k){if (k & 1)res *= a;k >>= 1;a *= a;}return res;
}

解析代码(比如计算 3^19)

先将3^19如此转换

设最终结果:res=1底数:a指数:k(下表为二进制形式)(k==0时结束循环)

  • 中间五个表达式都为相乘关系

  • 空白:表示与上方的单元格内容一样

  • 处理1:将X^2^0计算出来并乘上 res,若是 X^(0*2^0) 的格式,则直接跳过,因为值为1,乘不乘都可以(if (k&1) res *= a; )

  • 处理2:将指数提一个2出来(k >>= 1)(此操作相对于 k /= 2)

  • 处理3:将底数和指数中提出来的2进行计算,并使之称为新的底数( a *= a )

  • 计算,将左方的五个数字相乘

步骤 备注 res a k
0 初始 1 3 10011
1 处理1 3 3
处理2 01001
处理3 9
2 处理1 9 27
处理2 00100
处理3 81
3 处理1 1 跳过
处理2 00010
处理3 6561
4 处理1 1 跳过
处理2 00001
处理3 43,046,721
5 处理1 43,046,721 1,162,261,467
处理2 --- 00000
处理3 ---

所以最终结果是1,162,261,467

其中涉及到的知识点

按位与 &

先转换为二进制数,再对每一位进行与运算(一一得一,其余为零)

a b 二进制 a 二进制 b a & b (二进制) a & b
5 5 101 101 101 5
5 4 101 100 100 4
5 3 101 011 001 1
5 2 101 010 000 0
5 1 101 001 001 1
5 0 101 000 000 0        

还可以利用这个判断奇偶数,将一个数转换为二进制的如下形式

到2n(n>1)都是偶数,偶数加偶数还是偶数,是奇数,所以看一个数的奇偶数,就看0位了

也就是 N & 1 == 1 的话,则说明是奇数

移位运算 [ 右移(>>)为例 ]

转换成二进制后,将整体往右移一定位数,即,右移2位就是去掉最右边两位,左移反之

a b 二进制 a a >> b(二进制) a >> b
5 3 101 000 0
5 2 101 001 1
5 1 101 010 2

还有就是左/右移有个小细节:

一个无符号的int类型的数3的二进制形式:00000011(若该类型为八位的话)

左/右移的话(也就是相当于去到最右/左边的一位数):

左移后:0000011?

右移后:?0000001

其中,问号原先是不在该数据的界限之内,所以是不清楚他原先是0还是1

(我记得其中一个以为运算是补上0的,但我忘记了,而我也懒得去尝试了)

基于C/C++实现大指数幂的计算相关推荐

  1. 【2017年第1期】基于外卖物流配送大数据的调度系统

    蒋凡,徐明泉, 崔代锐 百度外卖研发中心 中图分类号:TP399    文献标识码:A doi:10.11959/j.issn.2096-0271.2017013 Scheduling system ...

  2. 第三届大湾区杯B题思路及代码-基于宏观经济周期的大类资产配置策略构建

    B 题 基于宏观经济周期的大类资产配置策略构建 赛题背景介绍: 赛题数据描述: 问题1. 寻找出高频有效的宏观经济指标,将 2001 年-2021 年国内的宏观经济运行状况划 分成不同的经济状态:(比 ...

  3. 基于AI排序算法的指数增强策略

    在介绍AI排序算法之前我们先介绍另外一个术语:特征工程 特征工程是使用专业背景知识和技巧来处理数据,使得特征能在机器学习算法上发挥更好作用的工程实践.这样解释可能并不直观.举例说明,当我们选择用指标来 ...

  4. 大数据交易研究_学术著作 | 基于电商平台大数据的特征价格指数研究——统计研究...

    基于电商平台大数据的特征价格指数研究 作者:雷泽坤,辽宁大学经济学院,清华大学中国经济社会数据研究中心:郑正喜,上海财经大学统计与管理学院,清华大学中国经济社会数据研究中心:许宪春,清华大学中国经济社 ...

  5. java中怎么实现指数幂,java中幂指数值的运算代码解析

    说到幂指数的运算我们就会用到Math.pow(doublea,doubleb),返回的结果是a的b次方. 在Java中,当我们计算2的n次方时,可以直接用Math.pow来计算.非常方便. 但是,已知 ...

  6. 图说2016深度学习十大指数级增长

    转自:https://www.52ml.net/21402.html http://mp.weixin.qq.com/s?__biz=MzI3MTA0MTk1MA==&mid=26519906 ...

  7. 计算指数_计算大指数

    计算指数 计算大指数 背景:这是一篇有关如何快速有效地计算大数指数的快速文章. 从基本的乘法算法开始,它随后给出了更快的算法和一些快速示例. 本文中使用的技术可用于一般数学,加密等. 在本文中,使用以 ...

  8. 判断一个数是不是2的指数幂

    判断一个数是不是2的指数幂 求一个数是不是2的指数幂 2^0=1,2^1=2,2^2=4,2^3=8 1 1的二进制为1 2的二进制为10 4的二进制为100 8的二进制为1000 发现只有最高位为1 ...

  9. 对应chd5.14的spark_GitHub - shixiaopengql/BigData-News: 基于Spark2.2新闻网大数据实时系统项目...

    基于Spark2.2新闻网大数据实时系统项目 1. 说明 2.环境配置 2.1 CDH-5.14.2 (安装步骤可参考地址),关于版本是按实际操作, CDH的版本兼容性很好. Service hado ...

最新文章

  1. 基于PowerShell 3.0的web接口测试
  2. 挺好用的SQLSERVER数据库自动备份工具SQLBackupAndFTP(功能全面)
  3. 深入理解Java中的逃逸分析
  4. 雷林鹏分享:C# 匿名方法
  5. 【OCR技术】字符识别技术总览
  6. 【一天一个挨打小技巧】暴力磁力种子磁力链接下载
  7. 【Latex论文排版】表格、图片和公式
  8. 教师个人三年发展规划
  9. Obsidian 插件安装
  10. 南京航空航天大学计算机组成原理,2017年南京航空航天大学计算机科学与技术学院829计算机专业基础之计算机组成原理考研题库...
  11. 算法提高 排队打水问题 无聊刷个水题
  12. html代码中文乱码解决
  13. 探究dosbox打印字符时的bug问题
  14. 苹果以旧换新活动_为什么苹果手机回收官方报价那么低?内行人告诉你!
  15. F1Delta Time 大奖赛世界巡回赛来啦
  16. 入门网安学习之路第一天
  17. 【MR】剖析YARN中uber模式
  18. 计算机毕业设计Java中医保健网站(源码+系统+mysql数据库+Lw文档)
  19. Realsense深度相机+pyqt5+应用案例(基础篇1)
  20. [渝粤教育] 中原工学院 互换性与测量技术基础 参考 资料

热门文章

  1. iOS换一种思路写一个无限轮播的滚动视图
  2. ESP8266开发之旅 网络篇⑭ web配网
  3. AWS: S3+Lambda+CloudFront的使用(CDK)
  4. 【转】php中的会话机制(2)
  5. 竟然还有比TC更强大的重命名软件?还真有,它叫DO。
  6. 长安逸动 售价或与宝骏630持平
  7. 国网做泛在电力物联网的初衷是什么?如何参与?
  8. 阻止人类进步的不是科技的发展,而是科技的普及
  9. 视频播放器realplayer的安装
  10. 【t056】智力问答(链表+计数排序做法)