偶数 A(n) = A(n/2) * A(n/2)

奇数A(n) = A((n-1)/2) * A((n-1)/2)

指数为0或小于1 怎么办?

底数为0 时返回什么?

* 2 ^ 4 = 16 4D = 100B

* res = power(2,2) -> power(2,1) -> 2

* |

* res&1=1

* 2*2

* 4*4

*/

public class 数值的整数次方 {

public static double power(double num, int exp) {

if (exp < 0)//解决负数问题

return 1 / power(num, -exp);

if (exp == 0)

return 1;

if (exp == 1)

return num;

double res = power(num, exp >> 1);

res = res * res;

if ((exp & 1) == 1)

res = res * num;

return res;

}

public static void main(String[] args) {

System.out.println(power(2, 4));

System.out.println(power(2, -2));

}

}

用右移运算替代了除以2

用位与运算符替代了求余运算符(%)来判断奇偶

当需要对2的次幂进行求余时,可以是使用&运算符来代替

a/b的除数b必必须为2的n次方

使用位操作(&运算)代替求余操作

%运算:a%b

由于我们知道位运算比较高效,在某些情况下,当b为2的n次方时,有如下替换公式:

a % b = a & (b-1)(b=2n)

即:a % 2n = a & (2n-1)

例如:14%8,取余数,相当于取出低位,而余数最大为7,14二进制为1110,8的二进制1000,8-1 = 7的二进制为0111,由于现在低位全为1,让其跟14做&运算,正好取出的是其低位上的余数。1110&0111=110即6=14%8;(此公式只适用b=2n,是因为可以保证b始终只有最高位为1,其他二进制位全部为0,减去1,之后,可以把高位1消除,其他位都为1,而与1做&运算,会保留原来的数。)

参考

java中整数的整数次方_数值的整数次方java相关推荐

  1. java中整数的整数次方_数值的整数次方 - 剑指 Offer 学习心得_教程_Java开发社区...

    数值的整数次方 代码实现: [java] view plaincopyprint? public class Test11 { /** * 实现函数double Power(double base, ...

  2. java中的Cookie是什么_第74节:Java中的Cookie和Session

    第74节:第74节:Java中的Cookie和Session ServletContext: 什么是ServletContext,有什么用哦,怎么用呢? 启动服务器后,会给每个应用程序创建一个Serv ...

  3. java中date类型如何赋值_一文读懂java中的Reference和引用类型

    简介 java中有值类型也有引用类型,引用类型一般是针对于java中对象来说的,今天介绍一下java中的引用类型.java为引用类型专门定义了一个类叫做Reference.Reference是跟jav ...

  4. java中i+=2什么意思_三分钟看懂Java中i++与++i的性能差别以及循环中如何使用

    在Java中,自增是一种非常常见的操作,在自增中,有两种写法,一种是前缀自增(++i),一种是后缀自增(i++).这里主要简单介绍两种自增的差别. 一.含义差别 前缀自增和后缀自增是不同的.前缀自增( ...

  5. java中 exe是什么文件_从文件位置运行Java中的.exe文件

    从文件位置运行Java中的.exe文件 我必须从我的Java程序打开一个.exe文件. 所以我试着下面的代码第一. Process process = runtime.exec("c:\\p ...

  6. java中整数的整数次方_数值的整数次方

    题目: 实现函数Power(double base,int exponed),求base的exponed次方,不能使用库函数,不需要考虑大数问题. 输入: 输入一个浮点型数字和一个整数数字(不管正负) ...

  7. java中bubblesort是什么意思_排序--冒泡排序BubbleSort(Java)

    原理简述 冒泡排序是最简单的排序算法之一,主要是通过不断交换相邻元素,实现排序. 简单例子 对[4,2,6,3,2,1]进行升序排序 第一遍(排出最大值) 1.png 第二遍(排出次大值) 2.png ...

  8. java中的随机生成算法_随机生成算法的java代码太复杂了

    public static Integer[] generateRandomArray(int n, int rangeL, int rangeR) { assert rangeL <= ran ...

  9. java中 关于静态方法的定义_为什么我们不能在Java接口中定义静态方法?

    从Java 8开始,Java接口中允许使用静态方法. 从Java 8开始,接口也可以具有静态帮助器方法.public interface vehicle { default void print()  ...

最新文章

  1. Python构建基于elkan优化算法的K-Means聚类模型
  2. 浅谈sql中的in与not in,exists与not exists的区别以及性能分析
  3. 开发者如何谈判才能获得更高的薪水?
  4. Pr常见问题,如何找回不小心删除的视频音频
  5. hdoj1465错排公式的应用(递推)
  6. Masscan工具使用
  7. 情人节神奇的传情之物,“懂爱”的你都会爱上它丨情人节系列
  8. 安装VMware时,出现 安装程序无法继续 Microsoft Runtime DLL 安装程序未能完成安装,解决方法
  9. 服装制造业信息化系统分析(一)
  10. 报错Check constraint “book_chk_1“ is violated。难道MySQL中insert 语句只能一条一条插入?
  11. 论文导读|《Exploiting Rich Syntactic Information for Semantic Parsing with Graph-to-Sequence Model》
  12. noip普及组2007 守望者的逃离
  13. iOS - 监控键盘高度、屏蔽字符、限制字符个数
  14. 造个轮子,动手实现一个复杂场景的表格组件(UniApp)
  15. b与b不同(b和B的区别)
  16. OneNote快捷键大全
  17. 什么是Hibernate方言和方言列表
  18. html判断是否节假日,C# 判断是否是节假日
  19. http://www.dewen.net.cn/q/16042/jquery fadeIn和fadeOut问题
  20. JavaScript之美读书笔记一

热门文章

  1. 清华教授发文劝退读博:​​我见过太多博士生精神崩溃、心态失衡、身体垮掉、一事无成!...
  2. CSS3居中的几种方法
  3. MySQL统计排序,同分数同排名
  4. 小孩由祖母带大会越发机灵[图]
  5. 多标签分类方法总结——实现方法、评价指标、损失函数
  6. ant-design-vue中自定义a-tree的打开与折叠图标
  7. Jenkins-LADP认证管理员密码修改后导致Jenkins没法登陆
  8. JAVA实习生面试问题
  9. MySQL深翻页、MySQL跳页
  10. OSPF实验知识点总结