登录
首页
电脑编程
回帖
发帖
正文
主题:一个简单却不知如何下手的问题,也许是智能问题,谁能破解?
点击:3164 回复:3
楼主
编辑
引用
管理
weeqeeyee
问题:一个90位的二进制数,如何快速确定其中“1”或“0”的个数?
要求:不用循环做,因为统计一次就来一个重复次数为90的循环,那么,我的程序中这个小操作涉及上百万次,效率太低。
求助:能不能对二进制数进行某些计算,直接确定答案?但我想了很久,想不出来。难道这是一个不可能的问题?谁能帮帮我?
05-09-21 08:46
1楼
编辑
引用
管理
吴辉
有意思,确定个数?
假设是一个"1",那90位的二进制就有90种表示,数值可以是
1,2,4,8,16,32,64......2^89
两个"1",排列组合就更多了
假设用除/减,其实也跟比较差不多了,那也用循环了,还是比较时间少
哪位知道!
05-09-21 12:26
2楼
编辑
引用
管理
吴辉
敢问老大,什么地方碰到这么个问题?**?
05-09-21 12:27
3楼
编辑
引用
管理
nyfuj
你的90位二进制是如何存贮的,用一维数组吗?
如果是存在12个整型变量里,一个整型变量存8位二进制。
形如:abcd efgh ijkl
(每个字母代表一个8位二进制)
那么,分别求出这12个整型变量中的1或者0的个数,相加即可得。
求出整型变量中的1或者0的个数的方法:
定义一个一维数组并按以下方法赋值
其中A[i]=j
i:对应为一个二进制数(转换成十进制,方便理解)
j:对应"i"中1的个数。(这里不要表示为0的个数)
也就是说这个一维数组下标i是上文的整型变量,值是个数,
如:A[0]=0
A[1]=1
A[2]=1
A[3]=2
A[4]=1
A[5]=2
A[6]=2
...
例:
s=A[a]+A[b]+A[c]+A[d]+A[e]+A[f]+A[g]+A[h]+A[i]+A[j]+A[k]+A[l]
不知我说清楚没有,呵呵。
最后修改:
2005-10-15 20:21:53
05-10-15 18:58
工控新闻
大族投的伺服系统厂商,斩获亿元融资!
国自助力海辰储能北美储能系统工厂开业
必胜共赢!2025博世力士乐变频器卓越伙伴研讨会圆满召开
信通电子启动招股 拟募资4.75亿元加码技术升级
制造业计量领域首个政策性文件发布!到2027年突破100+关键计量校准技术
加快推进工业智能体发展座谈会在京召开
皮尔磁:全新培训课程夯实工业信息安全基础
图尔克凝"金"聚力 锻造行业尖兵——2025图尔克工程师黄金认证培训现场直击
更多新闻资讯