java中怎么实现指数幂,java中幂指数值的运算代码解析
说到幂指数的运算我们就会用到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中幂指数值的运算代码解析相关推荐
- java怎么计算幂函数,java中幂指数值的运算代码解析
说到幂指数的运算我们就会用到Math.pow(doublea,doubleb),返回的结果是a的b次方. 在Java中,当我们计算2的n次方时,可以直接用Math.pow来计算.非常方便. 但是,已知 ...
- java的幂运算_java中幂指数值的运算
说到幂指数的运算我们就会用到Math.pow(double a,double b),返回的结果是a的b次方. 这个方法可以满足我们大多数幂指数的计算,但是每次访问的值和传入的值都是double,自己不 ...
- GLMP:任务型对话中全局到局部的记忆指针网络 论文阅读及代码解析
UPDATE 11.6.2020 复习代码,修正部分内容,清晰化部分表述.如发现问题,欢迎留言讨论! 文章目录 UPDATE GLMP ABSTRACT 1.INTRODUCTION 2.GLMP M ...
- String/StringBuilder/ToString()底层代码解析( JAVA / C# )
C# /JAVA: 字符串构建利器StringBuilder区别 前言 名词解释 1.1 示例 案例一: 不同变量赋值( = ) 案例二:相同变量赋值( = ) 案例三:变量追加赋值( += ) 1. ...
- java面试大全(7w字,更新中)
1.杂题 1.maven依赖冲突的解决方法 依赖冲突的原因 举个例子,A依赖于B与C,B依赖于D的1.0版本,C依赖于D的2.0版本,这就导致加载的时候到底会引入那个版本的jar包的问题 解决方法: ...
- java中的取模和取余_取模运算
本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 取模运算是求两个数相除的余数.[1] 取模运算("Modulus Operation")和取余运算(&qu ...
- java 绑定微信号开发_Java开发中的更多常见危险信号
java 绑定微信号开发 在< Java开发中的常见危险信号>一文中,我研究了一些不一定本身就是错误或不正确的做法,但它们可能表明存在更大的问题. 这些"红色标记"类似 ...
- java post和put的区别,ES 中的 POST 和 PUT 的区别
0.什么是Restful架构 比较难说清楚,这部分大雾状态,引ruanyf 理解RESTful架构 的几句总结吧: Fielding将他对互联网软件的架构原则,定名为REST,即Representat ...
- java中实现具有传递性吗_Java中volatile关键字详解,jvm内存模型,原子性、可见性、有序性...
一.Java内存模型 想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的. Java内存模型规定了所有的变量都存储在主内存中.每条线程中还有自己的工作内存,线程的工作 ...
最新文章
- Windows 7 应用程序崩溃恢复
- VB6.0连接MySQL数据库
- Java里面的静态代码块
- [vue] 你期待vue3.0有什么功能或者改进的地方?
- 修改Win7启动顺序和启动菜单名称
- c语言单元二实验报告,C语言实验报告.doc
- PMP之SOW项目工作说明书
- 微信小程序实现canvas画圆形微信头像
- OSPF P2MP 扩展知识
- java虚拟机之java堆
- MATLAB升级失败导致无法使用simulink
- STM32G070RBT6迷你开发板制作总结
- 华为和荣耀的关系:亲兄弟,各自为王
- DP4344音频转换芯片ACD/DAC完全兼容CS4344音频解码
- 有趣的数学问题-鸽巢原理
- 今天明经通道论坛又崩溃了
- [无线] 让Android支持cmwap上网
- Unmapped Spring configuration files found.Please configure Spring facet.”解决办法
- iOS开发之第三方分享微信分享、朋友圈分享,史上最新最全第三方分享微信方式实现、朋友圈方式实现
- 22春天津大学《钢筋混凝土结构(1)》在线作业1
热门文章
- git for windows下载
- 吴秀波事件女主,被耽误的高阶玩家,一年12个月烧钱游遍全世界
- Excel-用OFFSET和COUNTA实现动态增加下拉列表
- 直播api接口java_基于JAVA的电视台直播节目时间表api调用代码实例
- 重磅官宣:GitHub App 终于来了
- mybatis高级操作及源码分析(一)
- webug靶场渗透基础攻略
- android默认wifi密码,Android 修改WiFi热点的默认SSID和密码
- python dialect='excel'是什么意思_python excel自动化写入大数据量数据
- linux LTP移植Android,LTP(Linux Test Project) for Android的编译