首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

把一个随便正整数拆解成几个是2的n次方的数

2013-02-28 
把一个任意正整数拆解成几个是2的n次方的数如何把一个任意正整数拆解成几个是2的n(n为正整数)次方的数,例

把一个任意正整数拆解成几个是2的n次方的数
如何把一个任意正整数拆解成几个是2的n(n为正整数)次方的数,例如给参数25,就得到16 8 1;30 就得到16 8 4 2
[解决办法]
            List<double> lstt = new List<double>();
            String ssssssssssssss = Convert.ToString(25, 2);
            int index = ssssssssssssss.Length - 1;
            foreach(char ch in ssssssssssssss){
                if (ch == '1')
                {
                    lstt.Add(Math.Pow(2, index));
                }
                index--;
            }
[解决办法]

public void Func(int input)
{
   int m = 1;
   for(int i = 1;i<32;i++) 
   {
      if(m & input == m)
        Console.WriteLine(m);    

      m = m << 1;
   }
}

[解决办法]

        /// <summary>
        /// 把一个任意正整数拆解成几个是2的n次方的数
        /// </summary>
        /// <param name="num">传入的正整数</param>
        /// <returns>结果字符串:传入正整数51,输出结果为"2的0次方+2的1次方+2的4次方+2的5次方"                 </returns>
        public string Fun(int num)
        {
            string outputStr = "";
            string ss = Convert.ToString(num, 2);
            List<char> list = list = new List<char>();
            foreach (char s in ss)
            {
                list.Add(s);
            }
            int j = 0; //控制幂
            for (int i = list.Count - 1; i > -1; i--)


            {
                if (list[i] == '1')
                {
                    outputStr += "2的" + j + "次方+";
                }
                j++;
            }
            outputStr = outputStr.Substring(0, outputStr.Length - 1); //去最后一个"+"号
            return outputStr;
        }




[解决办法]

int v = 123455;
int x = 0, y = 1;
string s;
while(y <= v)
{
   if((v & (1 << x)) == 1)
  {
       s += pow(2, x).tostring() + " + ";
  }
  x++;
  y = pow(2, x);
}

热点排行