AcWing 26. 二进制中1的个数

ZynqMP双核通信避坑指南:Linux驱动+裸机固件协同开发实录 本文详细解析了Xilinx ZynqMP芯片中APU与RPU双核通信的技术实现,重点介绍了通过IPI中断实现Linux驱动与裸机固件协同开发的实战经验。内容涵盖硬件寄存器配置、Linux驱动开发、RPU裸机程序编写以及双核调试技巧,为开发者提供了一套完整的工程化解决方案,帮助规避常见开发陷阱。 阅读详情

1.方法1

容易理解的方法就是判断二进制最低位是否为1,然后计数器加一再将数据右移1位,直到数据变成0。需要注意的是,输入数据可能是负数。负数在右移时最高位会持续补1,这样的话程序会进入死循环。因此需要将输入数据强制类型转换为无符号整数,使得其右移时最高位补0(相关知识参考计算机组成原理的内容)。这里由于我们只关心输入数据的二进制表示,所以不必担心强制类型转换会带来问题。

由于每一次右移都相当于数据除2,因此该算法的时间复杂度为O(logn)(其中n为数据的二进制位数)。

具体代码如下:

class Solution {
public:
    int NumberOf1(int n) {
        int ans = 0;
        unsigned t = (unsigned) n;
        while(t){
            ans += t & 1;
            t >>= 1;
        }
        return ans;
    }
};

2.方法2

对于一个任意的带符号非零整数n,我们观察n和(n-1)的二进制表示会发现他们满足以下形式:

n:x,x,x,...,1,0,0,...,0(x为0或1)

n-1:x,x,x,...,0,1,1,...,1(x为0或1)

也就是说,在n的二进制的最后一个1之前(红色位置处),n与(n-1)的二进制形式是完全相同的,同时从该位置往后开始二者的二进制形式是完全相反的。因此在做n&(n-1)的操作后会将n的最后一个1置为0,无论这个1具体在什么位置上。这样重复若干次操作就一定能将n置为0,其中若能加以计数就能得知n的二进制中1的个数。

该算法的时间复杂度为O(n)(其中n为数据的二进制形式中1的个数)。

具体代码如下:

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

 

PLC为西门子的S7-1200,舵机为 DS3218,PLC控制舵机旋转程序实现? 🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。 阅读详情

相关推荐

构建高可用CephFS NFS网关:NFS-Ganesha与RADOS集群的深度整合

本文详细介绍了如何构建高可用的CephFS NFS网关,通过NFS-Ganesha与RADOS集群的深度整合,实现高效文件共享。文章涵盖核心架构、部署实战、性能调优及避坑指南,帮助用户解决Ceph客户端兼容性问题,提升存储访问效率。特别强调高可用设计,确保服务稳定性,适用于金融、电商等高要求场景。

weixin_26976635的博客 254

C#面试题:判断一个数的二进制位的某一位是否是1

判断一个数的二进制位的某一位是否是1. 代码如下: bool IsThirdBitOne(int num,int n){       //使用ToString()方法,转换成二进制,第二个参数只能是,2,8,16;       string s=Convert.ToString(num,2);       //在选择第n位数字与1比较      int b=s[n-1]&1; ...

QQhelphelp的博客 8454

基于紫光展锐平台的音频调用到hal层逻辑

基于紫光展锐平台的音频调用到hal层逻辑 1、数据流程图 AudioPolicyService和AudioFlinger的创建: 这两个服务都在audioserver中启动,文件路径: frameworks/av/media/audioserver/main_audioserver.cpp 从AudioFlinger和AudioPolicyService的创建,到output的打开,以及AudioFlinger开始往底层写入数据的具体流程如下图: #mermaid-svg-kjHL4XWwkQXN6NdA

weixin_55053963的博客 1355

多智能体AI在制药批次放行中的GMP合规实践

批次放行是药品质量管理体系的核心环节,其本质是基于确定性规则的多系统协同决策过程。传统人工比对模式面临数据割裂、规则隐性、审计追溯难等痛点,而多智能体AI通过职责分离、语义层抽象与Part 11原生嵌入,将GMP合规要求转化为可验证的技术架构。该方案不替代人员签字,而是强化质量数据整合能力与决策可重现性,已在口服固体制剂工厂实现放行周期从14天压缩至3天,并通过FDA现场检查验证。适用于正推进LIMS/MES/QMS集成、应对审计压力或启动计算机化系统验证(CSV)的制药企业质量与数字化团队。

weixin_34194087的博客 440

Deepseek:物理神经网络PINN入门教程

物理信息网络(Physics-Informed Neural Networks, PINN)是一种将物理定律(如偏微分方程、守恒定律等)嵌入神经网络训练过程的深度学习方法。其核心思想是通过神经网络同时拟合观测数据并满足物理约束,从而解决传统数值方法难以处理的高维、噪声数据或复杂边界条件问题。

金石软件 9298

华为设备有关用户名密码的策略配置

命令用来开启对密码进行复杂度检查功能,设备默认已经是开启状态。1、密码长度大于等于12位,含数字大小写字母和特殊符号。2、设置密码更换周期为90天。取值范围8-16,默认长度为8位。登录失败后锁定时间大于15分钟。3、登录失败次数小于5次。4、登录超时30分钟以内。

简单的创作,希望可以帮助到跟我一样的学习者! 7840

判断值用二进制表示时,某一位是否为1或找出所有的1

判断值用二进制表示时,某一位是否为1或找出所有的1 刷LeetCode题和看各类思路总结而来的 方法 方法一:位与运算 num & 1; num = num >> 1; 方法二:取模运算 N % 2 ==1; N /= 2; 方法一 位与运算& 性质: 都是1返回1,否则返回是0。 常见作用: ①判断某位值是否为1。 方法:将要检测的那位置为1,其余为0。该数和被检测对象进行位与,那么无论其他位置值是不是1,结果都是0,而只有要检测的那位置在被检测对象里为1的时候,结果才

weixin_44108388的博客 1万+

Python实战:5分钟搞定滑动平均窗口计算(附完整代码+逐行注释)

本文深入解析Python中滑动平均窗口计算的实现与优化,提供Numpy、Pandas等多种高效方案,并附完整代码和逐行注释。涵盖边界处理、性能优化及异常检测等实战技巧,帮助开发者快速掌握时间序列数据处理的核心技术。

weixin_30872157的博客 124

判断二进制数据中第n位是否为1

N:待判断的二进制数 B:待判断的位(右往左) 结果:((N>>(B-1))&1

凯 1万+

基于YOLOv13+CBAM注意力机制

本教程详细介绍了CBAM注意力机制的原理及其在YOLOv13中的集成方法。CBAM通过通道注意力和空间注意力两个模块,动态调整特征权重以增强模型性能。通道模块利用池化操作和共享MLP生成通道权重,空间模块则通过池化和卷积生成空间权重。教程提供了在YOLOv13中实现CBAM的具体步骤,包括模块代码定义、模型配置修改等关键环节,帮助开发者在目标检测任务中提升模型表现。

FJN110的博客 305

华为OD机试2025C卷 - CPU调度策略 (C++ & Python & JAVA & JS & GO)

华为OD机试 2025C卷 CPU调度策略,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解

qq_45776114的博客 1296

AcWing 26. 二进制中1的个数

文章目录AcWing 26. 二进制中1的个数AC代码 AcWing 26. 二进制中1的个数 本题链接:AcWing 26. 二进制中1的个数 本博客给出本题截图: AC代码 代码: class Solution { public: int NumberOf1(int n) { int res = 0; unsigned int un = n; while (un) res += un & 1, un >>= 1; .

佛系更新 565

跨平台也要跑得像原生一样顺:SAP GUI for Java 的安装、配置、运维与自动化实战

摘要:SAP GUI for Java 作为跨平台客户端解决方案,在 S/4HANA 时代仍发挥关键作用,特别适用于 macOS/Linux 环境下的 ABAP 开发和系统运维。其主要优势包括:平台无关性(支持 Windows/macOS/Linux/UNIX)、与 Windows 版本一致的交互体验、对核心事务码(如 ST22/SM21)的完整支持。版本管理需注意 7.80 已停止支持,建议升级至 8.10。安装支持原生包和通用 JAR 两种方式,推荐团队标准化版本和连接配置(通过 SAP UI Land

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 678

剑指Offer打卡day10—— AcWing 26. 二进制中1的个数

【题目描述】 AcWing 26. 二进制中1的个数 【思路】 位运算 n >> i & 1 按低位到高位逐位取出 class Solution { public int NumberOf1(int n) { int ans = 0; for(int i = 0; i < 32; i ++){ int u = n >> i & 1; if( u == 1) ans

JohnnyLin 158

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

AcWing 26 二进制中1的个数

题目描述: 输入一个32位整数,输出该数二进制表示中1的个数。 注意: 负数在计算机中用其绝对值的补码来表示。 样例1 输入:9 输出:2 解释:9的二进制表示是1001,一共有2个1。 样例2 输入:-2 输出:31 解释:-2在计算机里会被表示成11111111111111111111111111111110, 一共有31个1。 分析: 方法一: 对负数单...

昂昂累世士的博客 306

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Acwing第26题(二进制中1的个数)

相关题目: 二进制中1的个数https://www.acwing.com/problem/content/description/25/ 补充: 1 k&1的目的是为了取出k(以二进制的形式)的最后一位。 2 取出k=(1101)千分位的数,k=k>>3&1。 3 lowbit(int x){return x&-x} 该方法的目的是为了取出最后一个1后面的数字(包括1) 例如:10100 -> 100。 相关代码1: class S...

正在学算法的小朋友的博客 223

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【ACWing】26. 二进制中1的个数

题目地址: https://www.acwing.com/problem/content/25/ 给定一个323232位整数,输出其二进制表示中111的个数。 利用lowbit函数即可。代码如下: class Solution { public: int lowbit(int x) { return x & -x; } int NumberOf1(int n) { int res = 0; while (n) {

数学、算法爱好者的博客 122

acwing 26 二进制中1的个数 位操作

初始化一个计数器 count,用来记录二进制表示中1的个数。n >> i:右移 i 位,将要检查的位移到最低位。最后返回 count,它包含了二进制表示中1的个数。如果检查的最低位是1,就将 count 增加1。& 1:与操作,检查最低位是否为1。

一个简单的孩子。 121

ACWING26. 二进制中1的个数(剑指offer)

输入一个32位整数,输出该数二进制表示中1的个数。 注意: 负数在计算机中用其绝对值的补码来表示。 样例1 输入:9 输出:2 解释:9的二进制表示是1001,一共有2个1。 样例2 输入:-2 输出:31 解释:-2在计算机里会被表示成11111111111111111111111111111110, 一共有31个1。 思路: 负数补码表示,变成正数:232 + n。 再利用lowbit运算(x...

tomjobs的博客 550

【AcWing 26】. 二进制中1的个数 / 输入一个 32 位整数,输出该数二进制表示中 1 的个数

输入一个32位整数,输出该数二进制表示中1的个数。负数在计算机中用其绝对值的补码来表示。−100 ≤ 输入整数 ≤ 100。

JIikun的博客 802

AcWing26. 二进制中1的个数。三种解法Java

AcWing26. 二进制中1的个数。三种解法Java

qq_52726736的博客 414

剑指offer 15 . Acwing 26. 二进制中1的个数

输入一个32位整数,输出该数二进制表示中1的个数。 注意: 负数在计算机中用其绝对值的补码来表示。 样例1 输入:9 输出:2 解释:9的二进制表示是1001,一共有2个1。 样例2 输入:-2 输出:31 解释:-2在计算机里会被表示成11111111111111111111111111111110, 一共有31个1。 x = x & (x - 1) 每...

weixin_41514525的博客 150

AcWing 26. 二进制中1的个数(按位与 or lowbit运算)

输入一个 32 位整数,输出该数二进制表示中 1 的个数。 注意: 负数在计算机中用其绝对值的补码来表示。 样例1 输入:9 输出:2 解释:9的二进制表示是1001,一共有2个1。 样例2 输入:-2 输出:31 解释:-2在计算机里会被表示成11111111111111111111111111111110, 一共有31个1。 按位与 求某个二进制数x的第k位数:x>>k&1 class Solution { public: int NumberOf1(int n) {

Jacob0824的博客 189

AcWing 26. 二进制中1的个数 (位运算)

输入一个3232位整数,输出该数二进制表示中11的个数。 注意: 负数在计算机中用其绝对值的补码来表示。 数据范围 −100≤−100≤输入整数≤100≤100 样例1 输入:9 输出:2 解释:9的二进制表示是1001,一共有2个1。 样例2 输入:-2 输出:31 解释:-2在计算机里会被表示成11111111111111111111111111111110, 一共有31个1。 代码如下: class Solution { public: int...

weixin_57202646的博客 222

【位运算】*AcWing26.《二进制中1的个数》(C++)

本题来自AcWing第26题《二进制中1的个数》

m0_74172965的博客 260
上一篇: AcWing 25. 剪绳子(贪心+DP)
下一篇: AcWing 27. 数值的整数次方
Zee_Chao
博客等级 码龄11年 168粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值