合计计算统计
累计计算统计
比如有一批二进制数:
10001
11111
1100
1
10100
然后把这些数每个位置1的次数累计统计(应该是从右向左):
第一位统计:3
第二位统计:1
第三位统计:3
第四位统计:2
第五位统计:3
数据库里把数取出来了,最多就是5位:
有什么好方法吗?求解
------解决方案--------------------
按照楼主的结果,我想他的意思是:
10001
11111
01100
00001
10100
就如同十进制一样:
第一位统计:3(各位上的1的个数)
第二位统计:1(十位上的1的个数)
第三位统计:3(百位上的1的个数)
第四位统计:2(千位上的1的个数)
第五位统计:3(万位上的1的个数)
------解决方案--------------------
比如有一批二进制数:
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
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);