题目:输入一个整数,求该整数的二进制表达中有多少个1。
例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
难者不会,会者不难。
对于一个int n, n&1的结果就是n转化成二进制数后的最后一位的结果。利用这个性质,有如下代码:
- /*
- * =====================================================================================
- *
- * Filename: 1counter.c
- *
- * Description:
- *
- * Version: 1.0
- * Created: 10/03/2012 02:43:03 PM
- * Revision: none
- * Compiler: gcc
- *
- * Author: YOUR NAME (),
- * Organization:
- *
- * =====================================================================================
- */
- #include <stdlib.h>
- #include <stdio.h>
- /*
- * === FUNCTION ======================================================================
- * Name: main
- * Description:
- * =====================================================================================
- */
- int
- main ( int argc, char *argv[] )
- {
- int number = 11;
- int count = 0;
- while(number!=0){
- count += (number&1);
- number = number>>1;
- }
- printf ( "1 count = %d\n", count );
- return EXIT_SUCCESS;
- } /* ---------- end of function main ---------- */
阅读(820) | 评论(2) | 转发(1) |