java中如何实现幂指数值的运算

这篇文章主要为大家展示了“java中如何实现幂指数值的运算”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java中如何实现幂指数值的运算”这篇文章吧。

成都创新互联公司长期为数千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为遵化企业提供专业的网站制作、成都做网站遵化网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。

说到幂指数的运算我们就会用到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<<(3-1)来计算出结果。

4的2次方,我们先要把4转化为2的2次方,再来2<<(4-1)来计算出结果。

下面这个方法实现的效果是我们传入一个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<binaryCode.length();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<strArray.length;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中如何实现幂指数值的运算
URL网址:https://www.cdcxhl.com/article0/gsjpoo.html

成都网站建设公司_创新互联,为您提供搜索引擎优化App开发虚拟主机网站设计公司自适应网站网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

微信小程序开发