zoukankan      html  css  js  c++  java
  • 【剑指offer15】二进制中1的个数(位运算),C++实现

    原创博文,转载请注明出处!

    # 本文是牛客网《剑指offer》刷题笔记

    1.题目

    # 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。例如,把9表示成二进制是1001,有两位是1。因此如果输入9,该函数输出2。

    2.思路

    # 把一个整数减去1,再和原整数做与运算,会把该整数最右边一个1变成0.那么一个整数的二进制表示中有多少个1,就可以进行多少次这样的操作(循环次数等于二进制数中1的个数)。

    举例:9的二进制是1001,1001-1之后是1000,1001和1000做与运算后得到1000;1000-1之后是0111,1000和0111做与运算后得到0000;循环执行了两次,9的二进制中有两个1。

    3.code

    # 返回值:整数中1的个数

    # 参数:整数

      1 class Solution {
      2 public:
      3      int  NumberOf1(int n) {
      4          int count =0;
      5          while(n){
      6              ++count;
      7              n=n&(n-1);
      8          }
      9          return count;
     10      }
     11 };

     

  • 相关阅读:
    元宇宙通证
    高性能公链
    区块链不可能三角
    搭建自己的在线API文档系统
    windows 安装python环境
    golang beego项目的正确开启方法
    人生发财靠康波
    蒙代尔不可能三角
    Kubernetes 部署Dashboard UI
    Kubernetes 使用kubeadm创建集群
  • 原文地址:https://www.cnblogs.com/wanglei5205/p/8527297.html
Copyright © 2011-2022 走看看