题目的链接在这里:https://leetcode-cn.com/problems/number-of-1-bits/
暴力手段和位运算
代码如下:
public class Solution { public int hammingWeight(int n) { //找到一个数中数字为1的个数 //13就是 0000 1101 取反就是 1111 0010 //暴力手段 String s = Integer.toBinaryString(n); int count=0; for(int i=0;i<s.length();i++){ if(s.charAt(i)=='1'){ count++; } } return count; } }
代码如下:
public class Solution { public int hammingWeight(int n) { //找到一个数中数字为1的个数 //13就是 0000 1101 取反就是 1111 0010 //这里说的是 n-1 也就是 12 也就是 0000 1100 有一个方式是n和1进行& 这样就可以进行判断这个位置是不是1了 //然后n在右移 int count=0; //因为还有负数的影响 最多移动32次 int i=0; while (n!=0&&i<32){ count+=(n&1); n>>=1; i++; } return count; } }