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

    题目描述

    输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
     
     
    提交链接:点击
     
    思路:
      具体的可参考下个。 另外一种方法思路就是用无符号循环右移。因为考虑到负数的补码原因!
     
    代码:
    class Solution {
    public:
         int  NumberOf1(int n) {
             int count=0;
             while(n!=0){
                 n=n&(n-1);  //n-1是将从右边往左边数遇到的第一个1后面的0变为1,这个1变为0  n&(n-1)则是每次将最右边的1变为0,然后计数
                 count++;    //如n=1010 (n-1)=1001   n&(n-1)=1000
             }
             return count;
         }
    };

    非学无以广才,非志无以成学! 【Magic_chao

  • 相关阅读:
    vector详解
    笔记
    积木大赛
    codevs 1086 栈(Catalan数)
    不要把球传我
    同余方程 (codevs1200)
    最小集合
    数的计算
    产生数
    逃跑的拉尔夫
  • 原文地址:https://www.cnblogs.com/logo-88/p/9688074.html
Copyright © 2011-2022 走看看