给定一个整数,将该整数分解成多个2的幂次方相加的形式,每次都取最大的可以分解出来的2的幂次方
比如 65 64 1
1 1
2 2
package wanmanshijie; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Scanner; /** * * @author guoxm * @date 2014-12-16 */ public class PartitionNum { public static void main(String args[]){ Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); new PartitionNum().partition(num); } public void partition(int num){ List list = new ArrayList(); int helper = 1; while(helper <= num){ if((helper&num) != 0){ list.add(helper); } helper = helper<<1; } Collections.reverse(list); System.out.println(list); } }