Chinaunix首页 | 论坛 | 博客
  • 博客访问: 65030
  • 博文数量: 115
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-08 19:09
文章分类
文章存档

2015年(115)

我的朋友

分类: C/C++

2015-08-06 16:49:59

题目:输入一个整数,求该整数的二进制表达中有多少个1。
例如输入10,由于其二进制表示为1010,有两个1,因此输出2。

难者不会,会者不难。
对于一个int n,  n&1的结果就是n转化成二进制数后的最后一位的结果。利用这个性质,有如下代码:

点击(此处)折叠或打开

  1. /*
  2.  * =====================================================================================
  3.  *
  4.  * Filename: 1counter.c
  5.  *
  6.  * Description:
  7.  *
  8.  * Version: 1.0
  9.  * Created: 10/03/2012 02:43:03 PM
  10.  * Revision: none
  11.  * Compiler: gcc
  12.  *
  13.  * Author: YOUR NAME (),
  14.  * Organization:
  15.  *
  16.  * =====================================================================================
  17.  */
  18. #include <stdlib.h>
  19. #include    <stdio.h>

  20. /*
  21.  * === FUNCTION ======================================================================
  22.  * Name: main
  23.  * Description:
  24.  * =====================================================================================
  25.  */
  26.     int
  27. main ( int argc, char *argv[] )
  28. {
  29.     int number = 11;
  30.     int count = 0;
  31.     while(number!=0){
  32.         count += (number&1);
  33.         number = number>>1;
  34.     }
  35.     printf ( "1 count = %d\n", count );
  36.     return EXIT_SUCCESS;
  37. }                /* ---------- end of function main ---------- */

阅读(125) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~