当前位置: 代码迷 >> 综合 >> 剑指offer-JZ11-二进制中1的个数
  详细解决方案

剑指offer-JZ11-二进制中1的个数

热度:59   发布时间:2024-02-10 14:15:03.0

题目描述

输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。

思路:

考察位运算,最优做法:把一个整数减去1再与原来的整数做位与运算,得到的结果相当于把整数的二进制表示中最右边的1变成0.

这样有多少个1就循环多少次

C++

class Solution {
public:int  NumberOf1(int n) {int cnt = 0;while(n){n = (n - 1) & n;//移走最右边的1++cnt;}return cnt;}
};

 

  相关解决方案