博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
191. Number of 1 Bits
阅读量:6684 次
发布时间:2019-06-25

本文共 1063 字,大约阅读时间需要 3 分钟。

一、题目

  1、审题

  

  2、分析

    统计给出的无符号整数的二进制形式中的含有的 1 的个数。

 

二、解答

  1、思路:

    方法一、

      采用 JAVA 的 toBinaryString 方法,求出其二进制形式的字符串形式,在统计含有的字符 ‘1‘  的个数。

public int hammingWeight(int n) {        String s = Integer.toBinaryString(n);        int count = 0;        for(char c: s.toCharArray())            if(c == '1')                count++;                return count;    }

  

  方法二、

    ①、通过 n & 1 求出 n 最后一位二进制的位数 end;采用变量 ones 统计 end 是 1 的个数;

    ②、n >>>= 1; n 在无符号右移一位;当 n == 0 时 跳出循环。

public int hammingWeight2(int n) {        int ones = 0;        while(n != 0) {            ones += n & 1;            n = n >>> 1;        }        return ones;    }

 

  方法三、

    n &= n -1;   每次从 n 删除一个二进制 1。

public int hammingWeight(int n) {        int res = 0;        while(n != 0) {            n &= n -1;    // 每次从 n 删除一个 1            ++res;        }        return res;    }

 

 

注意:

    Java 没有无符号类型, int 型表示范围为[ -2147483648,  2147483647];

    Java 中  int 类型是循环表示的,而  2147483648 其实就是   -2147483648,也即  Integer.MAX_VALUE+1==Integer.MIN_VALUE;

    

 

转载于:https://www.cnblogs.com/skillking/p/9806859.html

你可能感兴趣的文章
NGINX开机自动启动
查看>>
PHP设计模式之构造器(Builder)
查看>>
2014年140个最好的jQuery插件集合
查看>>
资产-服务器变更流程图
查看>>
【Think社区】2013 PHP 技术峰会即将在上海举行
查看>>
Nginx常用Rewrite(伪静态)
查看>>
ubuntu端口 扫描和开启
查看>>
linux文件特殊权限及文件的访问控制列表
查看>>
centos6中安装consul
查看>>
js数组去重
查看>>
Shell ${} 变量使用技巧
查看>>
《北爱》的一点感想
查看>>
我的友情链接
查看>>
IOS动画与绘图
查看>>
Android图片压缩方法总结
查看>>
subprocess模块
查看>>
关于JasperReport打印多个和自动赋值解决办法
查看>>
分享14个超酷的视差滚动效果网站
查看>>
iptables防火墙的详解及使用;
查看>>
2016.4.26
查看>>