剑指offer系列之十:二进制中1的个数-阿里云开发者社区

开发者社区> rhwayfun> 正文

剑指offer系列之十:二进制中1的个数

简介:
+关注继续查看

题目描述:

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。比如输入9,9的二进制表示是1001,1的个数是2,所以输出2。

这有一个重要结论:一个数与该数减一的结果进行与运算,会把该数右边(低位)第一个1变为0,而该位左边保持不变(高位)。可以举一个简单的例子进行证明:比如1100(对应十进制是12),减去1之后的结果是1011(也就是十进制的11),两个数进行与运算之后,我们发现最后的结果是1000(对应十进制的8,当然这个8与后面没有关系,可以略过)。这样我们每进行一次的与运算就消去一个1,这样消到最后肯定是0了,所以我们可以在代码中以这个为循环的终止条件。

基于以上分析,可以写出如下的代码(已被牛客AC):

package com.rhwayfun.offer;

public class NumberOf1 {

    public int numberOf1(int n) {
        int sum = 0;
        while(n != 0){
            sum++;
            n = n & (n - 1);
        }
        return sum;
    }

    public static void main(String[] args) {
        int count = new NumberOf1().numberOf1(9);
        System.out.println(count);
    }
}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
二进制/十六进制转浮点数的编程(互转类似)
转换的程序: // 输入十进制整数,输出同样内存排布的float表示 inline float i2f(int i) { float f = 0; assert(sizeof(int) == sizeof(float...
839 0
[剑指offer] 二进制中1的个数
本文首发于我的个人博客:尾尾部落 题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 解题思路 如果一个整数不为0,那么这个整数至少有一位是1。
729 0
Matlab实现二进制矩阵转换为十进制
一.问题描述     [1 1 1 0 1   0 1 1 0 1   0 0 1 1 0] 每两位3转换为一个十进制数,共5列,那么转换后是ceil(5/3)=2列。   [7 1   6 1   1 2] 二.问题分析   1.每八个字符划分为一个十进制,nwords=ceil(size(b,2)/8)   2.按列处理每行的字符,只不过1到8是一组,为第一列;9到17是二组,为第2列。
1442 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4422 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
7740 0
递归程序练习:输出十进制数的二进制表示
/*====================================================================== 递归程序练习:将十进制转换为二进制这里是把一个十进制数的二进制数表示形式给输出。
493 0
二进制转成十六进制
二进制转成十六进制 1.基本原理:由于十六进制数基数是2的四次幂,所以一个二进制转换为十六进制,如果是整数,只要从它的低位到高位每4位组成一组,然后将每组二进制数所对应的数用十六进制表示出来。
562 0
+关注
111
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载