二进制中1的个数

JAVA实现输入一个整数,输出该数二进制表示中1的个数(《剑指offer》) 题目: 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 这个题目有个比较有意思并且被公认的解法,我就先贴答案吧: public class Solution { public int NumberOf1(int n) { int count = 0; while(n!= 0){ count++; 阅读详情

题目描述

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

源代码:

public class Solution {
    public int NumberOf1(int n) {
        int cnt=0;
        while(n!=0){
            cnt++;
           n=n&(n-1);
    }
        return cnt;
    }
}

解题思路:

如果一个整数不为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,就可以进行多少次这样的操作。

 

整数的二进制表示中1的个数 给出通常能想到的方式,这两种方式在《C和指针》一书中给出。以下讨论的均为非负整数。 /* 该方法每次在循环中判断数的二进制最右一位是否为1(如果该数能不能被2整除)。 每次循环后该数右移一位。因此遍历了数的二进制表示的每一位。 */ int count_one_bits1(int value) { int count; for (count = 0; value != 0; value 阅读详情

相关推荐

快速统计二进制中1的个数 分析篇

快速统计二进制中1的个数 分析篇

qq_44884300的博客 1478

【无标题】编程中的数字逻辑运算

一、与运算(&) 运算规则: 0&0=0;0&1=0;1&0=0;1&1=1 即:两个同时为1,结果为1,否则为0 即:3&5 = 1 *****PS:任何数与上0归零,与上1不变***** 二:或运算(|) 运算规则: 0|0=0;0|1=1;1|0=1;1|1=1; *******PS:任何数或上0不变,或上1变1******* 三:异或运算符(^) 运算规则:0^0=0;0^1=1;1^0=1; 1^1=0; *...

qq_60660610的博客 759

【Unity3D】关于unity中spriteAtlas的打包方案及使用时内存状态的多组对照实验

unity项目中使用精灵(Sprite)为了降低性能消耗,我们可以使用精灵图集(Sprite Atlas)技术,它能够将多个纹理合并成一个大纹理

云渊寒烬 5101

用C++实现统计二进制中1的个数

二进制(111010110111100110100010101) 2。 输入一个整数,统计并输出它二进制中有多少个1。 例如输入123456789。

m0_70506179的博客 1341

重带电粒子的能量歧离(energy straggling)

能量歧离,Bethe-Bloch

G751888629的博客 2298

Python实战:解析腾讯视频M3U8加密链接并下载高清影片

本文详细介绍了如何使用Python解析腾讯视频M3U8加密链接并下载高清影片。从环境准备、抓包分析到核心代码实现,逐步讲解如何获取M3U8主链接、解析TS分片列表以及下载合并视频片段。文章还提供了多线程下载、断点续传和加密视频处理等优化方案,帮助开发者高效完成视频下载任务。

weixin_30836759的博客 526

【C/C++】计算二进制中的1的简单方法

一、什么是二进制的1 众所周知,计算机存取一个数都是以0,1的方法存取的 二、求二进制的1的方法 (1)普通版 #include int count_one_bits(int value) { int count = 0; while( value != 0 ) { if(value%2 == 1) count++; value /= 2; } return co

皓皓松的博客 8205

Pydoll浏览器自动化框架教程

让浏览器自动化回归本质。不再纠缠驱动兼容、不再手动处理验证码、不再因为请求和 UI 分裂而头疼。如果你经常做 Web 自动化、爬虫或者测试,不妨试试 Pydoll。也别忘了给项目点个 ⭐,让作者知道有人喜欢这个工具。👉GitHub 地址。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 204

剑指offer(C++)——二进制中1的个数

题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 思路分析: 解法1:如果不考虑时间效率,使用除法,依次统计二进制中1的个数 /*时间复杂度大,效率低,只能处理正数,不能处理负数*/ int NumberOf(int n) { int count = 0; while (n) { if (n % 2 == 1) cou

YF_Li123的博客 1665

【人工智能】从零开始玩转龙虾(Openclaw):本地与云端(火山Arkcloud)部署全指南

龙虾(Openclaw)是一款海外智能体操作系统(agent operating system),可通过飞书机器人实现自动化办公、信息抓取、任务协作等功能。它支持本地部署和云端部署两种方式,适配MacOS和Windows系统(,建议优先使用MacOS)。sudo。

奶爸的编程之路,也就一周冷个三天 947

22、用户界面流程(UI Flow)全解析

本文全面解析了用户界面流程(UI Flow)的概念、创建步骤及其在系统设计中的应用。通过示例和操作步骤,详细介绍了如何确定屏幕范围、识别屏幕、创建过渡和标记触发器,并阐述了UI Flow在导航识别、验证、可用性优化、测试用例开发和需求推导中的重要作用。文章还结合问答系统案例,展示了UI Flow的实际应用价值,帮助读者深入理解并有效运用这一工具提升系统用户体验。

rice5的博客 154

统计二进制中 1 的个数

统计二进制中 1 的个数

m0_51747922的博客 2259

MATLAB地理数据处理 25:植被物候提取及分析模型优化(Savitzky-Golay)

之前我写过一篇使用Savitzky-Golay处理遥感数据,获取地面物候信息的MATLAB代码,但是发现存在一些问题:对物候开始期和物候结束期的阈值设定都为相同值,但是有些研究中,需要根据不同的环境条件,设置不同的物候阈值,所以对其进行相应的修改。

amyniez的博客,欢迎交流讨论 2233

计算一个数的二进制的1的个数

三种计算一个数的二进制中1的个数的方法

talk less, code more 1410

Google antigravity 不支持你所在地区?手把手教你把账号改成支持地区

Google antigravity功能火爆,但国内老账号根本用不了🤬本文分享几种有效的账号国家地区切换方法,最快几分钟就能让antigravity直接亮起🔥

XiaoqiangClub的博客 2万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

整数二进制中1的个数

要统计一个整数二进制中1的个数,首先我们会想到最简单的方法就是 % 2 再 / 2,然后判断每一位是否为1。 但是,如果这是一个很大的数,频繁的除法运算效率不是很高。而位运算比乘除法效率高,所以我们就来用位运算解决这道题。 首先方法一,当num大于0时,判断num & 1 的值,即可知道最后一位的值,循环每次num右移一位,即可完成目标。 然后方法二,num & 0x55555555 + ((num >> 1) & 0x55555555) 5的二进制为0101,按位与可

Mmonster23的博客 566

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

二进制中 1 的个数

题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 思路:本人的第一个想法就是 整数直接求二进制,然后统计1的个数;负数就直接求对应正数的二进制,在8位的基础上计算 除符号位外 其他位取反,而后二进制+1,最后统计1的个数。(是不是很繁琐) 知识补充:在计算机中,负数是以补码存储的。负数的补码:计算对应整数的二进制,由于整数为8位,第一位为1 ,其余用0补齐8位。然后除第...

qq_36167072的博客 191

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

二进制数1的个数及两二进制数异或后1的个数的奇偶

二进制数1的个数 判断二进制数1的个数,通过x &= x-1来不断消掉x的最右面的一位1,通过消除次数判断x的1的个数 例如x=0100,则x-1=0011,(x &= x-1) =0000,所以x中的1的个数为1 int onescount(int x){ int cnt = 0; while(x){ cnt++; x &= x-1; }...

Tan_JX 883

LeetCode–二进制中1的个数

LeetCode–二进制中1的个数 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 介绍 剑指 Offer 15. 二进制中1的个数 主站 191 题目 请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。 示例 1: 输入:00000000000000000000000000001011 输出:3 解释:输入的二进制串

归子莫的博客 1118

[模板题]二进制中1的个数

来源:模板题 算法标签:位运算 题目描述: 给定一个长度为n的数列,请你求出数列中每个数的二进制表示中1的个数。 输入格式 第一行包含整数n。 第二行包含n个整数,表示整个数列。 输出格式 共一行,包含n个整数,其中的第 i 个数表示数列中的第 i 个数的二进制表示中1的个数。 数据范围 1≤n≤100000, 0≤数列中元素的值≤109 输入样例: 5 1 2 3 4 5 输出样例: 1 1 2...

代码中枢:软件工程理论与实践的桥梁 589

C++计算二进制数中1的个数

见到计算二进制数中的1的个数的比较精巧的做法,做个笔记(其实是之前被问到了,所以就查了下…) int CountOnes(int n) { int count = 0; while(n) { ++count; n = n & (n - 1); } return count; } 刚看见时不太明白思路,然后自己拿笔随便划拉了下,算是搞明白了思路,简单总结一下。这个方法的主要...

no_367的博客 5443
上一篇: 变态跳台阶
下一篇: 数值的整数次方
It_BeeCoder
博客等级 码龄10年 967粉丝 238原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值