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

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

这个方法可以满足我们大多数幂指数的计算,但是每次访问的值和传入的值都是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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值