java中如何判断一个数是由1,2,4,8,16,32,64,128中的数字加起来的

希望给代码
楼下的误会了,我是想知道一个数,我只知道这个数有1,2,4,8,16,32,64,128这几个数字中某些数字加起来的,比如,我传入的是48,可以知道他是由32,和16组成的。

1:先把数字转位二进制
1 2 4 8 16 对应的分别是1 10 100 1000 10000
然后比如你要算7是分别有哪些组成,7 的二进制是111
那么1+10+100 = 111 (然后可以根据string 的字符去匹配也可以 按照占位符来弄)
然后比如你要算7是分别有哪些组成,12 的二进制是1100
那么匹配上面看出只有 前面两个数是1,然后映射到对应的数字就是4和8。说明12是由4个8组成

如果有for循环或者递归也可以,不过效率太低
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-26
public class Outer{
public static void main(String[] args) {
String str="1,2,4,8,16,32,64,128";
String[] num= str.split(",");
Long nums=0L;
for (String st : num) {
nums+=Long.valueOf(st);
}
System.out.println(nums);
if(nums==255L){
System.out.println(nums+"等于255");
}
}
}本回答被网友采纳
第2个回答  2012-07-26
很明显是2的平方嘛 判断一下是不是由2的n次方+1的1次或者0次方组成就行了
第3个回答  2012-07-26
不知是否可以重复用如:1+1+1那么所有的整数都是了。
如果限制了只能用一次的话应该是256以内的都可以。
第4个回答  2012-07-26
你这问题本身就有问题,照你这问题,任何一个自然数都将满足条件,至少都是1加起来的
相似回答