计算次方的问题,比如说我们知道28是2的4次方+2的3次方+2的2次方,如何通过一个函数分解数字,返回次方数,比如上例,我输入28,只要调用某个函数,可以返回4,3,2。返回的形式可以任意。可以一次返回,或者返回为一个数组都可以。或者不知道API有没有封装好的,有的话大侠们给我个给函数名。万分感谢!!!

解决方案 »

  1.   

    #include <bitset> std::bitset<128> bi(28);
    for (int i = 0; i < 128; ++i)
    {
    if (bi.test(i))
    {
    //! 值为真表示这一位为1,那就是这一位为2的某个次方 [4月/22日/2010年]
    //! 比如现在bi的值应该是(0,0,1,1,1,0,....)
    cout<<"值为真\n"; 
    }
    }
    这个只能计算2的次方,其他的还得另写算法
      

  2.   

    int main()
    {int num,i=0;
        printf("请输入一个整数");
        scanf("%d",&num);
        while(num)
         {
         if(num&0x1)   printf("%d",i);     //从小到大输出
          num>>=1;
          i++;
         }
    }