说到幂指数的运算我们就会用到(double a,double b),返回的结果是a的b次方。
这个方法可以满足我们大多数幂指数的计算,但是每次访问的值和传入的值都是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){
("you have an eroor code");
}else if(sum == 0) {
("you have no choise code");
}else{
String binaryCode = (sum);
("binary code:"+binaryCode);
int index = () -1;
String str = "";
for(int i=0;i<();i++){
if((i) == '1'){
str = str + index +",";
}
index --;
}
str = (0, ()-1);
(str);
String[] strArray = (",");
int[] result = new int[];
//也可以返回一个字符数组
//String[] result2 = new String[];
for(int i=0;i<;i++){
//result[i] = (int)(2, (strArray[i]));
result[i] = 2 << ((strArray[i])-1);
}
return result;
}
return null;
}