说到幂指数的运算我们就会用到Math.pow(doublea,doubleb),返回的结果是a的b次方。

在Java中,当我们计算2的n次方时,可以直接用Math.pow来计算。非常方便。

但是,已知一个幂的结果为M和幂的底数a,现在要求幂的指数n。Math中提供的有log(double)方法,但是只能传入一个参数,即M。那么问题来了,如何简单、方便、快捷的达到我们的要求呢?答案如下:

n=Math.log(M)/Math.log(a);

这个方法可以满足我们大多数幂指数的计算,但是每次访问的值和传入的值都是double,自己不想去转的话怎么办,我们有一种新的方案。

方案前提:幂指数的底数是2的倍数。

这里我们就用到了移位运算(移位运算是基于二进制来的,所以方案前提就是这个依据),如我们求2的3次方,我们可以用2<

4的2次方,我们先要把4转化为2的2次方,再来2<

下面这个方法实现的效果是我们传入一个2的倍数相加的两个数,比如12(是4+8),我们把它自动计算出[4,8]

再比如18,我们把它计算出[2,16]

再比如22,我们把它计算出[2,4,16]

/**

* 以2的次方开始的转换成整型数组,字符串数组

* @param sum 传入派系的值,可以是一个派系的值,也可以是多个派系相加的值

* 2^1 + 2^2 这种

* 突然忘记移位操作也是一种指数幂的运算

* @return

*/

private static int[] toUgroupArray(int sum){

if(sum < 0){

System.out.println("you have an eroor code");

} else if(sum == 0) {

System.out.println("you have no choise code");

} else{

String binaryCode = Integer.toBinaryString(sum);

System.out.println("binary code:"+binaryCode);

int index = binaryCode.length() -1;

String str = "";

for (int i=0;i

if(binaryCode.charAt(i) == '1'){

str = str + index +",";

}

index --;

}

str = str.substring(0, str.length()-1);

System.out.println(str);

String[] strArray = str.split(",");

int[] result = new int[strArray.length];

//也可以返回一个字符数组

//String[] result2 = new String[strArray.length];

for (int i=0;i

//result[i] = (int)Math.pow(2, Double.parseDouble(strArray[i]));

result[i] = 2 << (Integer.parseint(strArray[i])-1);

}

return result;

}

return null;

}

总结

以上就是本文关于java中幂指数值的运算代码解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

java中怎么实现指数幂,java中幂指数值的运算代码解析相关推荐

  1. java怎么计算幂函数,java中幂指数值的运算代码解析

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

  2. java的幂运算_java中幂指数值的运算

    说到幂指数的运算我们就会用到Math.pow(double a,double b),返回的结果是a的b次方. 这个方法可以满足我们大多数幂指数的计算,但是每次访问的值和传入的值都是double,自己不 ...

  3. GLMP:任务型对话中全局到局部的记忆指针网络 论文阅读及代码解析

    UPDATE 11.6.2020 复习代码,修正部分内容,清晰化部分表述.如发现问题,欢迎留言讨论! 文章目录 UPDATE GLMP ABSTRACT 1.INTRODUCTION 2.GLMP M ...

  4. String/StringBuilder/ToString()底层代码解析( JAVA / C# )

    C# /JAVA: 字符串构建利器StringBuilder区别 前言 名词解释 1.1 示例 案例一: 不同变量赋值( = ) 案例二:相同变量赋值( = ) 案例三:变量追加赋值( += ) 1. ...

  5. java面试大全(7w字,更新中)

    1.杂题 1.maven依赖冲突的解决方法 依赖冲突的原因 举个例子,A依赖于B与C,B依赖于D的1.0版本,C依赖于D的2.0版本,这就导致加载的时候到底会引入那个版本的jar包的问题 解决方法: ...

  6. java中的取模和取余_取模运算

    本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 取模运算是求两个数相除的余数.[1] 取模运算("Modulus Operation")和取余运算(&qu ...

  7. java 绑定微信号开发_Java开发中的更多常见危险信号

    java 绑定微信号开发 在< Java开发中的常见危险信号>一文中,我研究了一些不一定本身就是错误或不正确的做法,但它们可能表明存在更大的问题. 这些"红色标记"类似 ...

  8. java post和put的区别,ES 中的 POST 和 PUT 的区别

    0.什么是Restful架构 比较难说清楚,这部分大雾状态,引ruanyf 理解RESTful架构 的几句总结吧: Fielding将他对互联网软件的架构原则,定名为REST,即Representat ...

  9. java中实现具有传递性吗_Java中volatile关键字详解,jvm内存模型,原子性、可见性、有序性...

    一.Java内存模型 想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的. Java内存模型规定了所有的变量都存储在主内存中.每条线程中还有自己的工作内存,线程的工作 ...

最新文章

  1. Windows 7 应用程序崩溃恢复
  2. VB6.0连接MySQL数据库
  3. Java里面的静态代码块
  4. [vue] 你期待vue3.0有什么功能或者改进的地方?
  5. 修改Win7启动顺序和启动菜单名称
  6. c语言单元二实验报告,C语言实验报告.doc
  7. PMP之SOW项目工作说明书
  8. 微信小程序实现canvas画圆形微信头像
  9. OSPF P2MP 扩展知识
  10. java虚拟机之java堆
  11. MATLAB升级失败导致无法使用simulink
  12. STM32G070RBT6迷你开发板制作总结
  13. 华为和荣耀的关系:亲兄弟,各自为王
  14. DP4344音频转换芯片ACD/DAC完全兼容CS4344音频解码
  15. 有趣的数学问题-鸽巢原理
  16. 今天明经通道论坛又崩溃了
  17. [无线] 让Android支持cmwap上网
  18. Unmapped Spring configuration files found.Please configure Spring facet.”解决办法
  19. iOS开发之第三方分享微信分享、朋友圈分享,史上最新最全第三方分享微信方式实现、朋友圈方式实现
  20. 22春天津大学《钢筋混凝土结构(1)》在线作业1

热门文章

  1. git for windows下载
  2. 吴秀波事件女主,被耽误的高阶玩家,一年12个月烧钱游遍全世界
  3. Excel-用OFFSET和COUNTA实现动态增加下拉列表
  4. 直播api接口java_基于JAVA的电视台直播节目时间表api调用代码实例
  5. 重磅官宣:GitHub App 终于来了
  6. mybatis高级操作及源码分析(一)
  7. webug靶场渗透基础攻略
  8. android默认wifi密码,Android 修改WiFi热点的默认SSID和密码
  9. python dialect='excel'是什么意思_python excel自动化写入大数据量数据
  10. linux LTP移植Android,LTP(Linux Test Project) for Android的编译