这是一个很有意思的问题,也是在面试中最容易被问到的问题之一。这个问题有个正式的名字叫Hamming_weight,而且wikipedia上也提供了很好的位运算解决的方法,这个下面也会提到。解决这个问题的第一想法是一位一位的观察,判断是否为1,是则计数器加一,否则跳到下一位,于是很容易有这样的程序。?12345678910int test(int n) { int count=0; while(n != 0){ if(n%2 ==1) count++; n /= 2; } return count; }或者和其等价的位运算版本:?123456789int test(int n) { int co Read More
posted @ 2011-12-07 15:48 Muse牧马 Views(367) Comments(0) Diggs(2) Edit
问题描述: 给定一个十进制整数N,求出从1到N的所有整数中出现”1”的个数。 例如:N=2,1,2出现了1个“1”。 N=12,1,2,3,4,5,6,7,8,9,10,11,12。出现了5个“1”。问题求解:解法一: 最直接的方法就是从1开始遍历到N,将其中每一个数中含有“1”的个数加起来,就得到了问题的解。 代码如下:public long CountOne3(long n) { long i = 0,j = 1; long count = 0; for (i = 0; i <= n; i++) ... Read More
posted @ 2011-12-07 14:52 Muse牧马 Views(474) Comments(0) Diggs(0) Edit