不是转换为二进制然后对每个1进行处理么?
先找与之最相近的2的倍数,求余后再继续找,直到余数为1...
function getdata (num) { if(num%2 == 0) { strnum+="0"; } else { strnum+="1"; } num = parseInt( num / 2 ); if(num > 0) getdata(num); }
先将数据值转换成二进制 (strnum)
之后拆分这个strnum 然后存入一个数组中
最后循环这个数组
Math.pow(2,i);
IList<int> SomeMethod(int x)
{
string str = string.Format("{0:x}",x);
int numLength = str.Length * 4;
IList<int> list = new List<int>();
if (x == 0)
{
list.Add(0);
return list;
}
int k = 1;
if (x < 0)
{
x = -x;
k = -1;
}
for(int i = 0;i<numLength;i++)
{
int midvalue=x&((int)(Math.Pow(2,i)));
list.Add(midvalue*k);
}
while (list.Remove(0))
{
}
return list;
}
除2,从后排除所得的余数。
这个是不是什么面试题,怎么会有这么多人有类似的问题?
你看我之前回答过的一个一样的问题
http://space.cnblogs.com/question/14207/
我知道这能什么用
可以用到数据压缩上面去
不过我做的效果不好。