小渣渣的算法学习笔记:2018秋招备战
数据结构类算法总结:位运算
1.题目描述:
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
2.思路解析:
这是一道很基本的考察二进制和位运算的面试题。做法总结:把一个整数减去1,在和原整数做与运算,会把该整数最右边的1变成0.那么一个整数中有多少个1就会进行多少次这样的操作。基于这种思路,写出的代码如下:
3.代码实现:
public class Solution11 { public static void main(String[] args) { Solution11 s = new Solution11(); int count = s.numberOf1(21); System.out.println(count); } public int numberOf1(int n){ int count =0; while(n!=0){ ++count; n = (n-1)&n; } return count; } }