计算一个数是由多少个不重复的2的多少次方的和
以2的次方表示角色类型,如管理员角色编号为4(2的2次方),经营商角色为2(2的一次方),普通用户角色为1(2的0次方)
适用少量角色类型
public class CheckUserTypeUtil {
public static int[] isUserType(int n,int[] i,int m){
int k=1;
for (;;){
int i1 = n >> k;
if (k==(i.length)||i1==0){
i[m]=k-1;
m++;
break;
}
k++;
}
int i1 = n - (1 << (i[m-1]));
if (i1<=0){
return i;
}
return isUserType(i1,i,m);
}
public static void main(String[] args) {
int[] power = isUserType(7, new int[]{-1,-1,-1}, 0);
System.out.println(power);
}
}