您现在所在的是:

电脑编程

回帖:3个,阅读:3131 [上一页] [1] [下一页]
922
weeqeeyee
文章数:8
年度积分:50
历史总积分:922
注册时间:2005/9/21
发站内信
发表于:2005/9/21 8:46:00
#0楼
问题:一个90位的二进制数,如何快速确定其中“1”或“0”的个数?

要求:不用循环做,因为统计一次就来一个重复次数为90的循环,那么,我的程序中这个小操作涉及上百万次,效率太低。

求助:能不能对二进制数进行某些计算,直接确定答案?但我想了很久,想不出来。难道这是一个不可能的问题?谁能帮帮我?
9012
吴辉
文章数:2351
年度积分:50
历史总积分:9012
注册时间:2002/1/15
发站内信
发表于:2005/9/21 12:26:00
#1楼
有意思,确定个数?
假设是一个"1",那90位的二进制就有90种表示,数值可以是
1,2,4,8,16,32,64......2^89
两个"1",排列组合就更多了
假设用除/减,其实也跟比较差不多了,那也用循环了,还是比较时间少
哪位知道!
9012
吴辉
文章数:2351
年度积分:50
历史总积分:9012
注册时间:2002/1/15
发站内信
发表于:2005/9/21 12:27:00
#2楼
敢问老大,什么地方碰到这么个问题?**?
4327
nyfuj 版主
文章数:1496
年度积分:50
历史总积分:4327
注册时间:2004/6/5
发站内信
发表于:2005/10/15 18:58:00
#3楼
你的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编辑过]
   时时勤拂拭,莫使染尘埃。没有六祖的顿悟,只求神秀的力学慎思。
                                                  心镜(nyfuj)

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

46.8003