3.14159,按照你的意思是不是就要返回2(就是有两个1)?如果是这样,我给你个思路,3.14159先转成整数314159,怎么转,几位有效数字你自己解决,然后用314159除以10求模,设为A1,这时候判断如果A1==1,B自增1(B就是你要返回的数,就是有几个1);然后314159/10=31415;再循环上一步……一直到最后为3<10结束,这时候B的值就是答案。
如果你要的是这种情况:
例如,32位数字是:1010……1010=Y
那你就这么办:
设X=00000……1
求:Z=X&Y,如果Z==0,B自增1(B是要返回的值),不过Z不=0,B不变;然后Y右移1(或者X左移1),此时Y=1010……101,(或者X=000……10);
循环上一步;
一直到Z<1结束,此时的B就是答案。
13-12-23 16:49