zoukankan      html  css  js  c++  java
  • 二进制中1的个数

    任意给定一个32位无符号整数n,求n的二进制表示中1的个数,比如n = 5(0101)时,返回2,n = 15(1111)时,返回4

     1 #include "stdafx.h"
     2 
     3 //可能引起死循环,当n为负数时 
     4 int NumberOf1_Solution1(int n)
     5 {
     6     int count = 0 ;
     7     while(n)
     8     {
     9         if(n & 1)
    10             count++ ;
    11         n = n >> 1;
    12         
    13         // cout+=n&1;
    14         // n >>=1;
    15     }
    16     return count ;
    17 }
    18 
    19 //循环次数等于整数二进制的位数 
    20 int NumberOf1_Solution2(int n)
    21 {
    22     int count = 0 ;
    23     unsigned int flag = 1;
    24     while(flag)
    25     {
    26         if(n & flag)
    27             count ++ ;
    28         flag = flag << 1;
    29         // count +=n&flag?1:0;
    30         // flag<<=1;
    31     }
    32     return count;
    33 }
    34 
    35 /*最佳方法 整数有几个1就循环几次  
    36 把一个整数减去1,再和原来整数做与运算,会把该整数最右边一个1变成0。
    37 那么一个整数的二进制表示中有多少个1,就可以进行多少次这样的操作。
    38 */ 
    39 int NumberOf1_Solution3(int n)
    40 {
    41     int count = 0 ;
    42     while(n)
    43     {
    44         n = (n-1) & n ;
    45         count ++ ;
    46     }
    47     return count ;
    48 }
    49 
    50 int main()
    51 {
    52     int number ;
    53     printf("请输入一个整数 (ctrl+z退出) :");
    54     while(scanf("%d",&number) != EOF)
    55     {
    56         if(number >= 0)
    57             printf("Solution1 is: %d
    Solution2 is: %d
    Solution3 is: %d
    ", 
    58             NumberOf1_Solution1(number), NumberOf1_Solution2(number), NumberOf1_Solution3(number));
    59         else  //当number<0 时 只用方法2,3计算 
    60             printf("Solution2 is: %d
    Solution3 is: %d
    ",NumberOf1_Solution2(number), NumberOf1_Solution3(number));
    61             
    62         printf("请输入一个整数 (ctrl+z退出) :");
    63     }
    64     return 0 ;
    65 }

    运算结果如下:

  • 相关阅读:
    form表单中name和id区别
    为什么我做网站开发不使用前端框架
    设置GridView表头的背景图片
    input文本框隐藏边框
    如何在asp.net页面使用css和js
    HTML与XHTML的差别
    asp.net实现关闭当前网页功能
    asp.net判断文件或文件夹是否存在
    asp.net自定义错误页面
    asp.net中textbox获得焦点后清空默认文本
  • 原文地址:https://www.cnblogs.com/sankexin/p/5615248.html
Copyright © 2011-2022 走看看