本文主要是介绍求整数 1-n 总共出现1的个数 及 求整数的二进制中1的个数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
继之前博文的补充(求整数位数,正序逆序输出,总计1的个数)https://blog.csdn.net/TUJI67/article/details/80381306
//todo 求1,2,3,4...总共出现1的个数 例如n=12(1,10,11,12),返回5个
//从1开始除以10取余,若余数为1,计数器加一,直到n取余为0结束,返回计时器即为所求。
int CountAlldOne(int n)
{int count = 0;int i,j;for(i = 1,j = i;i <= n;) //i表示当前循环的次数,j表示当前操作的数{while(j != 0){if(j%10 == 1){count++;}j/=10;}i++;j = i;//每次j操作完后都变为0,需要i重新赋值}return count;
}
//统计数字的二进制中1的个数 例如8->1,5->2,11->3 int Bits(int n)
//将十进制数转换为二进制数,再用以上求所有1的方法求
int CountAllbOne(int n)
{int count = 0;int b[32]; //b[32] 表示整型的4字节(即32位,模拟二进制)int t=0;while(n != 0) //统计转为二进制后有几位,并给每一位赋值{{b[t]=n % 2;n /= 2;t++;}}int i = 0;while(i < t){count += (b[i] % 10 == 1) ? 1:0; //统计有几个1i++;}return count;
}
//统计数字的二进制中1的个数
int CountAllbOne(int n)
{int count = 0;int b[32];int t=0;while(n != 0){b[t] = n%2;n /= 2;if(b[t] == 1) //在将整数转为二进制时,直接判断每一位是否为1,是1计数器count就加一{count += 1;}t++;}return count;
}
这篇关于求整数 1-n 总共出现1的个数 及 求整数的二进制中1的个数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!