二进制中1的个数

简介: 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 解析:如果一个整数不为0,那么这个整数至少有一位是1。如果我们把这个整数减1,那么原来处在整数最右边的1就会变为0,原来在1后面的所有的0都会变成1(如果最右边的1后面还有0的话)。

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

解析:如果一个整数不为0,那么这个整数至少有一位是1。如果我们把这个整数减1,那么原来处在整数最右边的1就会变为0,原来在1后面的所有的0都会变成1(如果最右边的1后面还有0的话)。其余所有位将不会受到影响。
举个例子:一个二进制数1100,从右边数起第三位是处于最右边的一个1。减去1后,第三位变成0,它后面的两位0变成了1,而前面的1保持不变,因此得到的结果是1011.我们发现减1的结果是把最右边的一个1开始的所有位都取反了。这个时候如果我们再把原来的整数和减去1之后的结果做与运算,从原来整数最右边一个1那一位开始所有位都会变成0。如1100&1011=1000.也就是说,把一个整数减去1,再和原整数做与运算,会把该整数最右边一个1变成0.那么一个整数的二进制有多少个1,就可以进行多少次这样的操作。

 

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

这么变态。。。这都能想到。。

目录
相关文章
|
前端开发 JavaScript Java
【面试题】说说 JavaScript数组常见的操作 (20个)
【面试题】说说 JavaScript数组常见的操作 (20个)
168 0
|
算法 安全 数据挖掘
解锁编程之门:数论在算法与加密中的实用应用
解锁编程之门:数论在算法与加密中的实用应用
|
C语言
【C语言】:字符分类与转换函数
【C语言】:字符分类与转换函数
116 1
阿里云香港主机要备案吗-阿里云香港服务器要备案吗-阿里云香港服务器主机价格
阿里云香港服务器需要备案吗? 阿里云香港服务器及主机不需要备案。阿里云香港及阿里云国外节点都不需要备案。 阿里云香港服务器和阿里云香港主机的区别: 阿里云服务器,就相当于一台网上电脑,和我们操作本地电脑是一样的。
17578 0
|
前端开发 JavaScript 程序员
Tailwind 生成的 CSS文件竟然有 3.7 Mb 这么巨大!这还能用?
Tailwind 是最近国外大火的 Utility CSS 框架,形态上有点类似以前的 Bootstrap,潮流是一种轮回。 用它来写一个卡片,大概是这样的体验,只用到了工具 class,而不用写任何额外的样式:
|
Java
SpringBoot原理分析 | 任务:异步、邮件、定时
SpringBoot原理分析 | 任务:异步、邮件、定时
135 0
|
算法 架构师 Java
八年美团架构师用254幅图解+实际源码剖析带你深入探讨GC具体实现
GC算法会根据自动内存回收所需的环境(机器、语言、应用等)的不同而不同。到具体的程序层面,GC则为程序员提供了一个最佳的游乐场所,令其尽情地发挥编程技巧,大展身手。GC这东西很麻烦,但却是必需的。它就像一个 幕后英雄,默默地做着贡献,用户并不会期待它变得显眼。但因为它进行的是幕后工作,所以编程老手们或许会为之心动。
|
机器学习/深度学习 存储 人工智能
【排序算法】排序算法介绍及插入排序 ( 直接插入排序 && 希尔排序 )
【排序算法】排序算法介绍及插入排序 ( 直接插入排序 && 希尔排序 )
|
存储 SQL 关系型数据库
47 张图带你 MySQL 进阶!!!(三)
主要介绍了基本的 SQL 命令、数据类型和函数,在具备以上知识后,你就可以进行 MySQL 的开发工作了,但是如果要成为一个合格的开发人员,你还要具备一些更高级的技能,下面我们就来探讨一下 MySQL 都需要哪些高级的技能
150 0
47 张图带你 MySQL 进阶!!!(三)