专栏首页武培轩的专栏剑指Offer-二进制中1的个数

剑指Offer-二进制中1的个数

package Other;

/**
 * 二进制中1的个数
 * 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
 */
public class Solution19 {
    public static void main(String[] args) {
        Solution19 solution19 = new Solution19();
        System.out.println(solution19.NumberOf1_3(3));
    }

    public int NumberOf1_3(int n) {
        return Integer.bitCount(n);
    }

    /**
     * 如果一个整数不为0,那么这个整数至少有一位是1。
     * 如果我们把这个整数减1,那么原来处在整数最右边的1就会变为0,原来在1后面的所有的0都会变成1(如果最右边的1后面还有0的话)。
     * 其余所有位将不会受到影响。
     *
     * @param n
     * @return
     */
    public int NumberOf1_2(int n) {
        int count = 0;
        while (n != 0) {
            count++;
            n = (n - 1) & n;
        }
        return count;
    }

    /**
     * 用flag来与n的每位做位于运算,来判断1的个数
     *
     * @param n
     * @return
     */
    public int NumberOf1(int n) {
        int count = 0;
        int flag = 1;
        while (flag != 0) {
            if ((flag & n) != 0) {
                count++;
            }
            flag = flag << 1;
        }
        return count;
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Leetcode#191. Number of 1 Bits(位1的个数)

    编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。

    武培轩
  • 剑指Offer-变态跳台阶

    package Recursion; /** * 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳...

    武培轩
  • Leetcode#461. Hamming Distance(汉明距离)

    武培轩
  • 经典笔试题-try{}里有一个return语句,那么紧跟在这个try后的finally{}里德code会不会被执行?什么时候被执行,在return之前还是

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    cwl_java
  • 挑战程序竞赛系列(38):4.1模运算的世界(1)

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.n...

    用户1147447
  • 策略模式(Strategy)

    - 1.Strategy:策略接口,用来约束一系列具体的策略算法。Context使用这个接口来调用具体的策略,实现定义的策略。

    qubianzhong
  • Java里面volatile关键字修饰引用变量的陷阱

    如果我现在问你volatile的关键字的作用,你可能会回答对于一个线程修改的变量对其他的线程立即可见。这种说法没多大问题,但是不够严谨。

    我是攻城师
  • 如果让你手写个栈和队列,你还会写吗?

    昨天跟一个CSDN上的朋友聊天,他说现在如果让他自己手写一个栈或者队列,估计都要写蛮久的,平时虽然都在用,但是都是别人封装好的集合。

    Java团长
  • Android人脸识别app——基于Face++,MVP+Retofit+RxJava+Dagger高度解耦

    最近公司项目比较空,花了点时间写了个人脸识别的app,可以查看你的性别、年龄、颜值、情绪等信息,利用的是 Face++ 的人脸识别API。本项目采用了 MVP ...

    Android技术干货分享
  • HDUOJ-----F(x)

    F(x) Time Limit: 1000/500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/...

    Gxjun

扫码关注云+社区

领取腾讯云代金券