二进制中含有1的个数

保姆级教程:用PyTorch从零实现SDE扩散模型(附完整代码与MNIST实战) 本文提供了一份详细的PyTorch教程,指导读者从零开始实现SDE扩散模型,并附有完整的代码示例和MNIST数据集实战。通过解释随机微分方程(SDE)的核心概念、模型架构设计、训练流程实现以及采样生成过程,帮助开发者掌握扩散模型的构建与应用。 阅读详情

看到剑指Offer中二进制中1的个数这个题目,才感觉到位运算的强大。原来整数不用换成二进制,遇到位运算符会自动变成二进制进行计算。所以当输入的数为负数时,也不用考虑负数的表示问题,因为在进行二进制运算时,系统会自动将其以补码形式表示。

num & 1 为真则说明num是奇数,为0则说明num是偶数

例如二进制:num = 0110 1011 中含有多少个1呢,当num & 0000 0001 结果为1说明num右边第一位为1,当num & 0000 0010 结果为1,说明右边数第二位也为1;

所以定义 int  flag = 1;flag << 1左移一位与num进行与计算 判断二进制每一位是否为1,当flag结果为0时,循环结束

具体代码如下所示:

class Solution {
public:
     int  NumberOf1(int n) {
         int count = 0;
         int flag = 1;
         while(flag)
         {
             if(n&flag)
                 count++;
             flag = flag << 1;             
         }
         return count;
     }
};

位运算的优先级:


下面列举了一些常见的二进制位的变换操作。

功能 | 示例 | 位运算

----------------------+---------------------------+--------------------

去掉最后一位 | (101101->10110) | x>>1

在最后加一个0| (101101->1011010) | x<<1

在最后加一个1| (101101->1011011) | x<<1+1

把最后一位变成1| (101100->101101) | x|1

把最后一位变成0| (101101->101100) | x| 1-1

最后一位取反 | (101101->101100) | x^ 1

把右数第k位变成1 | (101001->101101,k=3) | x|(1<< (k-1))

把右数第k位变成0 | (101101->101001,k=3) | x& ~(1<<(k-1))

右数第k位取反 | (101001->101101,k=3) | x^(1 shl (k-1))

取末三位 | (1101101->101) | x&7

取末k位 | (1101101->1101,k=5) | x&(1<<(k-1)

取右数第k位 | (1101101->1,k=4) | x>>(k-1)&1

把末k位变成1| (101001->101111,k=4) | x|(1<<k-1)

末k位取反| (101001->100110,k=4) | x^ (1<<k-1)

把右边连续的1变成0 | (100101111->100100000) | x&(x+1)

把右起第一个0变成1 | (100101111->100111111) | x| (x+1)

把右边连续的0变成1 | (11011000->11011111) | x| (x-1)

取右边连续的1 | (100101111->1111) | (x^ (x+1))>>1

去掉右起第一个1的左边| (100101000->1000) | x&(x^(x-1))(或x&(-x))


瑞芯微RK3568与RK3566芯片选型指南:从接口差异到应用场景深度解析 在嵌入式系统与边缘计算领域,芯片选型是决定产品成败的关键一步。其核心在于理解芯片的架构、接口扩展能力与系统可靠性之间的平衡。以瑞芯微(Rockchip)的RK3568和RK3566为例,这两款同为四核A55架构的芯片,在基础算力上相近,但其面向的应用赛道却因接口配置而截然不同。RK3568凭借其双千兆网口、PCIe 3.0高速接口以及全链路ECC内存支持,在技术价值上更侧重于构建高可靠、高扩展性的系统,如边缘计算网关、工业控制器和网络视频录像机(NVR)。相比之下,RK3566则以其精简的接口配置,精准服务 阅读详情

相关推荐

Word多级标题出现黑块的解决思路(word 数字必须介于1-1638之间)

遇到多级目录出现黑块问题,看到一篇博客完美解决,在此记录。

AI_Optimization的博客 3716

C++--二进制中1的个数

二进制中1的个数 题目: 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 方法一: #include<iostream> #include<math.h> using namespace std; int nums(int n) { int count=0; int flag=1; while(flag){ ...

海到无边天作岸 山登绝顶我为峰 5908

企业级 Agent 在 K8s 上的运行模型

Kubernetes├── Agent Orchestrator(控制面)├── Agent Runtime Pods(执行面)├── Graph DSL(流程层)├── Tool Services(能力层)K8s(调度)+ Graph(流程)+ Agent(决策)+ Tool(执行)+ Guard(治理)

一起修行,不孤单。这里有编程语言、开发工具、学习方法论和踩坑笔记。用简单的话说复杂的事,陪你从小白到进阶。周更干货,欢迎一起成长! 1172

《剑指offer刷题笔记》14、二进制中1的个数 【c++详细题解】

题目 输入一个 323232 位整数,输出该数二进制表示中 111 的个数。 注意: 负数在计算机中用其绝对值的补码来表示。 样例1 输入:9 输出:2 解释:9的二进制表示是1001,一共有2个1。 样例2 输入:-2 输出:31 解释:-2在计算机里会被表示成11111111111111111111111111111110, 一共有31个1。 思路1 lowbit(x)lowbit(x)lowbit(x)函数的作用 lowbit(x)lowbit(x)lowbit(x)操作返回 xx

林深不见鹿 的博客 2865

基于boot + 双app升级方案

基于boot+双app的升级方案

weixin_44654285的博客 4515

Frida实战:从adb连接到安卓设备参数加密Hook全流程解析

本文详细解析了使用Frida进行安卓应用动态分析的全流程。通过adb连接设备并部署Frida服务端,结合静态分析与动态Hook技术,精准定位并拦截关键函数,特别是针对参数加密等核心逻辑的实时监控与修改,为逆向分析与安全研究提供了高效实战方案。

weixin_29208077的博客 343

二进制中1的个数

题目描述 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 方法一: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最直观的方法,就是把这个数转变为二进制,然后判断最小位位是否为1,然后把数字往右移一位,这样右边

和产品battle的秃头程序 4759

Python接口自动化测试实战:Requests+Pytest+Excel+Allure框架搭建指南

接口自动化测试是现代软件工程中保障软件质量的关键实践,其核心原理是通过脚本模拟客户端请求,自动验证API的功能、性能和可靠性。在Python技术栈中,Requests库以其简洁的API成为处理HTTP请求的基石,而Pytest框架则凭借其灵活的Fixture机制和强大的参数化功能,为测试用例的组织与执行提供了优雅的解决方案。结合Excel进行数据驱动测试,能够有效实现测试数据与脚本逻辑的分离,提升协作效率;最终通过Allure生成可视化测试报告,清晰呈现测试结果与过程。这套技术组合(Requests, Py

weixin_28677451的博客 304

二进制中包含1的数量

#include using namespace std; int func(int x) { int count = 0; while(x) { count ++; x=x&(x-1); } return count; } int main() { cout<< func(15) << endl; return 0; }结果是4.

Thinking 641

DeepQA: A Unified Transcriptome-Based Aging Clock Using Deep Neural Networks

摘要: 本研究针对转录组衰老时钟存在的关键局限——仅在健康样本训练导致对患病个体预测偏差的问题,提出DeepQA,一种基于专家混合架构与新型Hinge-MAE损失函数的深度学习模型。通过同时利用健康与患病个体的异质数据训练,DeepQA显著提升预测精度:在健康个体上MAE比现有方法低1.5年,且是首个能正确处理五类疾病条件的模型。其创新性体现在: 方法学突破:Hinge-MAE损失函数消除健康/患病样本的训练偏差,专家混合架构高效整合多队列数据; 流程革新:摒弃传统基因预筛选步骤,通过显著图分析直接识别衰老

qq_44050612的博客 125

(王道408考研数据结构)第一章绪论-第二节1:算法的基本概念、算法的特性及设计要求

算法(Algorithm):是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作王道视频课中讲到了一个例子,展示了算法就是解决问题的特定步骤的描述对于给定的问题可以有多种多样的算法来解决,只不过这些算法有各自的优点和缺点。

快乐江湖的博客 2685

计算二进制中含有1的个数

二进制含有1的个数int WhCalcOne(int iData) { int iCount = 0; while(iData) { iCount++; iData = iData & (iData - 1); } return iCount; }二进制含有0的个数int WhCalcZero(int iData) { retu

wan_ghuan 360

手把手教你学基于 Linux 的 NPU 固件开发-第 10 讲:可靠性设计(RAS)——让系统坚如磐石错误检测、纠正与上报机制(ECC、Parity)

组件推荐保护机制备注HBM/DDRScrubbing必须开启,定期巡检片上 SRAMECC(权重/激活值),Parity(指令)权衡面积与可靠性计算单元ABFT或DMR(关键路径)防止计算逻辑错误片上网络CRC重传保证数据传输完整性系统软件AER 上报CE 监控自动恢复闭环管理,杜绝 SDC运维策略预测性维护Checkpoint变被动为主动核心心法(信任硬件,但必须验证。在纳米尺度下,错误是必然发生的物理现象。

MHD0815的博客 92

输入一个非负数,判断二进制下该数含有“1”的个数。

使用移位和位与运算,时间复杂度O(n); #include "stdio.h" #include "math.h" int main() { int a; scanf("%d",&a); for (i = 1; i <= 32; i++) { if (a >> (i - 1) & 1 == 1) q++; } printf("%d", q); return 0; } 进阶版算法(很重要!!!) #include "stdio.h" int main()

nepu_bin的博客 864

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

求一个整数中,二进制数含有1的个数

// 求一个整数中,二进制数含有1的个数 #include #include using namespace std; int solusion(int n) { int count = 0 ; while(n) { count++ ; // 实质上是将最右边的1置为0,再按位与,去掉最后一个1,依此类推直到最后一个0 n = n & (n-1) ; }

Mr.Simple的专栏 1267

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

十进制数含有的二进制1个数

获取某十进制数中含有的二进制1的个数,求数中1的个数???1000-1 = 0111 ,正好是原数取反,这就是原理,比移位操作效率高 #include      int func(int x)              {  int count = 0;   while(x)    {      count++;      x = x&(x-1);  }     return

qisefengzheng的专栏 总有一天你将破蛹而出 475

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

返回一个数二进制中含有的1的个数

int func(int x) { int count = 0; while (x) { count++; x = x & (x - 1); } return count; }

编程小喵 159

统计一组二进制数中的含有1的个数

问题:统计一组二进制数中含有1的个数 思路:利用位运算,当n&(n-1) 可以发现原二进制数中少了一位1,同时利用计数器进行累加即可。

学习的路上,永不停止 250

统计给定一个整数以二进制表达时含有1的个数

int OneInInteger(int number){  int count = 0;  while(number){     number = number & (number - 1);    count++;  }  return count;}

anikan_yu的专栏 742

输入一个整型变量,求它二进制位中含有1的个数

C语言基础编程 &按位与操作符的应用 求一个整型变量的二进制表示中1的个数三种方法

sky_Mata的博客 2192

用循环的方法求一个十进制数对应二进制中含有1的个数

int func(x) { int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx; } x = 9999 时,x-1=9998,用二进制表示 10011100001111 10011100001110 当他们执行&运算

myKernel 1211

3. 计算输入数字的二进制表示中含有1的个数

#include <stdio.h> #include <stdlib.h> #include <string.h> using namespace std; int main() { unsigned int x = 9; int countx = 0; while(x) { countx++; x &= (x-1); } printf("%d\n",...

weixin_42505877的博客 149

编程计算数字二进制中含有1的个数(32位机器为例)

得到二进制中数字含1的简单方法 了解数字的二进制位 我们知道数字在计算机中是以二进制形式存储的,其实数字是以补码的形式存储的,在此我们可以了解一下,关于三种”码” ,即就是 原码、 反码 、补码。数字有正负之分,正数的原码、反码、补码都是一样的,负数有所不同,如果我们想要得到一个负数的补码,我们先必须写出这个负数的原码,比如:-1其原码是(100…01),共32位数字,最高为是符号位1,表示...

YH98_666的博客 1535

看一个数据类型转换成二进制,含有“1”的个数

int calcBinaryOfOne(int x) { int countx = 0; while(x) { countx++; x = x & (x-1); } return countx; }

小鸟cc的博客 331

趣题:用位运算生成下一个含有k个1的二进制数(转载)

趣题:用位运算生成下一个含有k个1的二进制数(转载)  (转载自matrix67的专栏:http://blog.youkuaiyun.com/matrix67/archive/2008/09/24/4779921.aspx)     在所有8-bit的整数中,含有k个数字“1”的二进制数一共有C(8,k)个。给出其中的一个二进制数,你如何利用位运算快速找到下一个恰有k个“1”的数?例如,如果给

goal00001111的专栏 1183

求N!的二进制表示中最低位1的位置

题目第一种解法: /************************************************************************/ /* 判断N!的二进制数中最低位1的位置 解法一: 题目和上一题差不多,上一题是0的个数,这里是最低位1的位置,是类似的。 由于二进制中除以2能整除为0,所以,这个问题就是求二进制数种2个个数。*/ /*******

passion_wlz的专栏 2122
上一篇: 自己实现文本相似度算法(余弦定理)
下一篇: 深度优先遍历与广度优先遍历(c++二叉树算法实现)
Traveling_DING
博客等级 码龄12年 65粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值