合计计算统计

累计计算统计
比如有一批二进制数: 
10001
11111
  1100
         1
10100
然后把这些数每个位置1的次数累计统计(应该是从右向左):
第一位统计:3
第二位统计:1
第三位统计:3
第四位统计:2
第五位统计:3

数据库里把数取出来了,最多就是5位:

...
sqlda.Fill(ds);
 for (var i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
string ab = Convert.ToString(int.Parse(ds.Tables[0].Rows[i][0].ToString(),2);

}
....


有什么好方法吗?求解

------解决方案--------------------
引用
比如有一批二进制数: 
10001
11111
  1100
         1
10100
然后把这些数每个位置1的次数累计统计(应该是从右向左):
第一位统计:3
第二位统计:1
第三位统计:3
第四位统计:2
第五位统计:3


引用
虽然没有明白你想表达的意思,有种运算叫位运算的,针对的就是二进制,你可以去了解一下


按照楼主的结果,我想他的意思是:
10001
11111
 01100
00001
10100
就如同十进制一样:
第一位统计:3(各位上的1的个数)
第二位统计:1(十位上的1的个数)
第三位统计:3(百位上的1的个数)
第四位统计:2(千位上的1的个数)
第五位统计:3(万位上的1的个数)

------解决方案--------------------

IEnumerable<int> numbers = ds.Tables[0].Rows.OfType<DataRow>().Select(row => row.Field<int>(0));

int d1Count = numbers.Count(num => (num & 1) > 0);
int d2Count = numbers.Count(num => (num & 2) > 0);
int d3Count = numbers.Count(num => (num & 4) > 0);
int d4Count = numbers.Count(num => (num & 8) > 0);
int d5Count = numbers.Count(num => (num & 16) > 0);