二进制中1的个数

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

 1 # -*- coding:utf-8 -*-
 2 class Solution:
 3     def NumberOf1(self, n):
 4         count = 0
 5         flag = 1
 6         for i in range(32):
 7             if n & flag:
 8                 count += 1
 9             flag <<= 1
10         return count
11         # write code here

 

leetcode地址,Java版代码:

算法思路:使用 n&(n-1),该位运算去除 n 的位级表示中最低的那一位1。

 1 public class Solution {
 2     // you need to treat n as an unsigned value
 3     public int hammingWeight(int n) {
 4         int cnt = 0;
 5         while (n != 0) {
 6             cnt++;
 7             n &= (n - 1);
 8         }
 9         return cnt;
10     }
11 }

另一个版本:

 1 public class Solution {
 2     // you need to treat n as an unsigned value
 3     /*
 4      * 请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。例如, 把 9 表示成二进制是 1001,有 2 位是
 5      * 1。因此,如果输入 9,则该函数输出 2。
 6      */
 7     public int hammingWeight(int n) {
 8         return Integer.valueOf(n).bitCount(n);
 9     }
10 }

 

posted on 2019-06-12 22:10  Sempron2800+  阅读(136)  评论(0编辑  收藏  举报