欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

剑指offer十一:二进制中1的个数

发布时间:2025/6/15 编程问答 36 豆豆
生活随笔 收集整理的这篇文章主要介绍了 剑指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的个数的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。