剑指offer十一:二进制中1的个数
生活随笔
收集整理的这篇文章主要介绍了
剑指offer十一:二进制中1的个数
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
package com.jianzhioffer;public class NumberOf1Test {public static void main(String[] args){int res = NumberOf1(7);System.out.println("============"+res);res = NumberOf1(-5);System.out.println("============"+res);res = NumberOf1_(7);System.out.println("============"+res);res = NumberOf1_(-5);System.out.println("============"+res);}public static int NumberOf1_(int n){int count=0;while(n!=0){count++;n=(n-1)&n;//由于每次n和n-1相与都会导致,n的最右边的为1的元素变成0,因此总共要循环的次数就是1的个数次。}return count;}public static int NumberOf1(int n) {int tag=1;int count=0;while(tag!=0){// 0000 0111// 0000 0001//System.out.printf("%d, %d, %d\n",n, tag, n&tag);if((n&tag)!=0)count++;tag=tag<<1; }return count; } }
总结
以上是生活随笔为你收集整理的剑指offer十一:二进制中1的个数的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 剑指offer十:矩形覆盖
- 下一篇: java web三:反射