求一个无符号整数转化为二进制后1的个数

【编程之美】任意给定一个32位无符号整数n,求n的二进制表示中1的个数 任意给定一个32位无符号整数n,求n的二进制表示中1的个数,比如n = 5(0101)时,返回2,n = 15(1111)时,返回4。这也是一道比较经典的题目了,相信不少人面试的时候可能遇到过这道题吧,我今天就遇到了,当时懵了。现在想想多简单,浪费了一次机会。 1.普通法 这种方法最简单,就是通过移位+计数。首先把n于1相&,如果结果==1,说明最后一位是1,计数器+1;然后右移一位,最后一位 阅读详情

/*
 *给出一个无符号整数,求这个整数转化为二进制后1的个数
 */
#include <stdio.h>

int numOfOne(unsigned int n)
{
    unsigned int flag = 1;
    int count = 0;
    while(flag <= n)
    {
        if(flag & n)
        {
            ++count;
        }
        flag = flag<<1;
    }
    return count;
}

int main()
{
    unsigned int num = 121;
    printf("%d\n", numOfOne(num));

    return 0;
}

快速求一个32位无符号整数二进制中为1的个数 一个数5,二进制表示法,为101,则有2个1,如何快速求出一个32位无符号整数中1的个数,如果要我们来做,我们可能会进行一个32次的循环,从1至32,依次测试相应的位;这个算法不是最优的。以下算法效率的要快很多:http://aggregate.ee.engr.uky.edu/MAGIC/。源代码如下 unsigned int ones32(register unsigned int x) { /* 32-bit recursive reduction using SWAR... 阅读详情

相关推荐

计算一个数二进制中1的个数超全解法(C语言)

文章目录前言求二进制中1的个数1、第一种思路:n & 11.对1左移左移代码2.把n右移右移代码右移缺陷2种改进代码2、第二种思路:n % 2代码3、第三种思路:n & (n-1) (最容易想不到的)代码 前言 求二进制中1的个数 1、第一种思路:n & 1 对于任何一个数n和1按位与都会得到n的个位是不是1,其他位都会和0相与得0。 个位是0,表达式n&1的结果是0,个位是1,结果也是1. 那么问题就来了这只能判断个位呀,要是判断其他位怎么整呀?? 不慌这里我们

艾小方的博客 2694

汇编程序:统计一个字的二进制表示中1的个数

                                                  统计一个十六位字中1的个数的汇编小程序思路:利用逻辑左移指令shl的功能:                  如 shl ax, 1  将ax中的最高位放在psw中CF中,然后,将其余的位依次左移一位,最后一位用0填充。                 该字为16位,逻辑左移16

wzb56的资料库 1万+

整数的二进制表示中1的个数

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

Sunshine的专栏 4912

判断32位无符号整数二进制中1的个数

1、比较简单和容易理解的方法就是逐位比较法: #include <iostream> using namespace std; int findone(unsigned int n){ for(int i=0;n>0;n>>=1) i+=(n&1); return i; } int main(){ int n;...

weixin_30437847的博客 646

【C语言位操作】统计一个无符号整数的二进制表示中1的个数

位操作练习:统计一个无符号整数的二进制表示中1的个数

qq_44314658的博客 1224

别再只调电位器了!用单片机PWM控制LM317输出电压,精度和玩法都多了

本文探讨了如何利用单片机PWM控制LM317输出电压,替代传统的电位器调节方案。通过PWM信号的有源滤波和运放处理,实现了更高精度(±5mV)、更好温度稳定性(0.01%/°C)的数控稳压电源设计,支持远程控制和可编程曲线输出,为经典电路注入数字化智能。

weixin_29164497的博客 360

无符号长整数字节互换与二进制转换

无符号长整型数据转换成二进制输出: void printBin(unsigned long int num) { int cnt = 0; unsigned mask = 1u<<31; for(; mask; mask>>=1) { if(cnt%8==0&&cnt!=0) cout<<" "; cout<< (num&ma

JJJ's blog 1930

TekTronix 高速信号完整性基础以及测试方法分析

如果信号速率比较高,则CTLE与FFE都无法满足要求,尤其是大于10G,比如USB3.1Gen2 10Gbps,PCIe4.0 16Gbps,这些场合都会采用DFE均衡,DFE的优点是,它既可以识别当前比特,并且可以判决前面的n个比特(Tap的阶数越高,看到的前面的比特数越多),根据前面比特的变化来计算出要处理当前比特所要变化的幅度,来补偿由于前面比特变化所引起的信号幅度的变化。10G以下,一般都不太关心这个串扰,高于10G的信号,会发现相互之间的串扰越来越明显,已经成为引起误码的重要的原因之一。

weixin_45365488的博客 4143

将一个无符号整型数据转换成二进制字符串c语言_[读书笔记]CSAPP:3[VB]整型数据类型

视频地址:【精校中英字幕】2015 CMU 15-213 CSAPP 深入理解计算机系统 课程视频_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com【精校中英字幕】2015 CMU 15-213 CSAPP 深入理解计算机系统 课程视频_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com课件地址:http://www.cs.cm...

weixin_39820173的博客 1385

MobaXterm详细使用教程

当然MobaXterm的功能远不止这些,但这些是最基本,最常用的,因此先拿出来讲。点击确定后,输入密码(输入密码时并不会显示,只管输入后按确定即可,第一次登陆成功后会提示保存密码,一般选择同意),就可以连接上虚拟机了。(2) 我们可以直接apt-get安装vim等常用功能(或者官网下载插件),实现在windows下模拟linux环境,这样就可以使用vi命令准备INCAR文件,也可以使用Gnuplot进行绘图。支持 Unix 命令(bash,ls,cat,sed,grep,awk,rsync,…

博客 4万+

利用netmq在相机应用于unity之间传输图像数据

Unity工业相机接入方案解析 本文探讨了在Unity中接入不同品牌工业相机的技术方案。研究发现: Basler相机可直接调用官方DLL(pylonc.net.dll)实现接入 海康和大恒相机因驱动DLL依赖C++组件,无法直接调用 解决方案:通过独立进程(相机应用程序)与Unity进行通信,采用NetMQ实现图像数据传输 技术实现要点: 相机端:使用PublisherSocket发布JPEG图像帧 Unity端:通过SubscriberSocket订阅图像数据 优化:设置高水位线控制缓存帧数,避免数据堆积

weixin_46450859的博客 417

实现十进制无符号整数到二进制数的转换

编写递归函数void DtoB,实现十进制无符号整数到二进制数的转换。递归提示:例如,如果要输出13的二进制数1101,可以考虑先递归输出13的前面的三个二进制数110,最后再输出结尾的1。 样例输入:13 样例输出:1101 #include <iostream> using namespace std; void DtoB(unsigned long num) { if...

韶言大雅 5552

手把手教你用Vivado的STARTUPE3原语驱动S25FL256S Flash(附完整Verilog代码)

本文详细介绍了如何利用Xilinx UltraScale+系列FPGA的STARTUPE3原语驱动S25FL256S SPI Flash,包括原语配置、SPI协议实现、状态机设计及调试技巧。通过完整的Verilog代码示例和性能优化建议,帮助开发者高效完成Flash通信解决方案的开发与集成。

weixin_30660027的博客 460

统计无符号整数二进制中 1 的个数(Hamming Weight)

1.问题来源之所以来记录这个问题的解法,是因为在在线编程中经常遇到,比如编程之美和京东的校招笔试以及很多其他公司都累此不疲的出这个考题。看似简单的问题,背后却隐藏着很多精妙的解法。查找网上资料,才知道这个问题的正式的名字叫Hamming weight(汉明重量)。2.问题描述对于一个无符号整型数,求其二进制表示中1的个数。比如12的以32位无符号整型来表示,其二进制为:00000000 000000......

Doublelv 的博客专栏。 5662

从数据到行动:客服运营必分析的8大核心维度

服务运营正从被动响应升级为数据驱动型战略体系。客服中心的海量交互数据能精准反映服务效能、客户体验及运营短板,关键在于实现数据的可视化与可操作化。本文系统剖析了八类核心数据指标:1)客户行为数据(CSAT/NPS/投诉内容);2)通话效率指标(AHT/接通率);3)服务质量(质检体系/情绪识别);4)坐席绩效(FCR/客户评价);5)流程与知识库(转接率/工单时效);6)渠道流量分析;7)异常预警机制;8)成本收益模型。通过构建多维数据分析体系,企业可在客户全生命周期管理中实现服务升级、风险防控与资源

2202_75469062的博客 1401

Open3D 机载点云电力线提取【2025最新版】

传统方法实现的机载点云电力线分割提取。博客长期更新,本文最新更新时间为:2025年3月23日。

点云侠的博客 4468

求一个整数的二进制序列中1的个数

11>>1的补码00000000000000000000000000000101。可知n = n & (n - 1)每执行一次n的二进制序列中1的个数就减少1个。当n=0时退出循环,此时count = 3 也就是二进制中1的个数。可知右移后的二进制序列的最低位只要是1,按位与操作后的结果就是1,也就是说n的二进制序列中有几个1循环就执行几次,大大提高代码效率。这里假设 n = 11 , i = 1。经过n = n & (n - 1)操作后。经过n = n & (n - 1)操作后。

2402_89035880的博客 933

Python爬虫实战:新浪财经股票金融数据全方位抓取教程

本教程系统介绍了新浪财经股票数据爬取技术,从静态网页解析、实时接口请求到异步爬取和数据存储,帮助你搭建了一个完整的金融数据采集流程。未来,可以结合深度学习模型进行行情预测,或者将数据接入量化交易系统,实现自动化投资。

2201_76125261的博客 2210

求一个整数二进制中1的个数(详解)

计算一个整数的二进制有多少个1,可以更深层次的理解数据在内存中的存储。

crawer 2248

OV9734 DATASHEET,完整规格书

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

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【C语言】三种方法求二进制中1的个数

输出一个整数的32位二进制中1的个数

weixin_67711401的博客 4241

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

JAVA:求整数二进制中1的个数

输入一个整数,输出该数二进制1的个数。 使用的按位符: &:二进制之间对比,比较每个位置都是1时,结果为1,否则为0。 >>>:无符号右移符将二进制向右位移位数。 例子 &: >>>: 结合以上两种计算符我们可以实现对参数每一位进行比较从而获得我们需要的结果二进制1的个数。 代码: public static int getNumber(int n){ int res = 0; int t = n; w

u012415458的博客 1627

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

求一个整数的二进制中1的个数

算法-求二进制数中1的个数 问题描述 任意给定一个32位无符号整数n,求n的二进制表示中1的个数,比如n = 5(0101)时,返回2,n = 15(1111)时,返回4 这也是一道比较经典的题目了,相信不少人面试的时候可能遇到过这道题吧,下面介绍了几种方法来实现这道题,相信很多人可能见过下面的算法,但我相信很少有人见到本文中所有的算法。如果您上头上有更好的算法,或者本...

aids78711的博客 321

【C语言】求一个数的二进制中 1 的个数

求一个数的二进制的1的个数

LX18792732127的博客 4663

求一个整数二进制中1的个数(三种方法详解)

当涉及到二进制时就要想到按位操作符,右移左移操作符了,同时也可以在有时间的情况下探索一下是否有更多思路。

2301_79551553的博客 951

【三种方法】求一个整数存储在内存中二进制中的1的个数附两道课外练习题

数据在内存中以补码形式存储。题目要求我们求一个数在内存中二进制中1的个数,从这里可以想到,我们需要定义一个变量count来计数,再得到二进制的每一位,并且再判断它是否为1,这道题就差不多解决了。但问题就是如何得到二进制的每一位?我们知道二进制的每一位要么是0要么是1,因此求二进制中1的个数,只需%2,看得到的余数是不是1,如果是1,count++,之后/2使得这个二进制去掉最后一位,如此循环往复,直到该数字为0,count的值就是1的个数。课外练习:用位运算判断一个数是否是2的次方数;二进制位置0或者置1

wait___wait的博客 858

算法-无符号整数中位1的个数

编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数 示例 1: 输入:00000000000000000000000000001011 输出:3 解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。 示例 2: 输入:00000000000000000000000010000000 输出:1 解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为

天佑木枫 741
上一篇: 插入排序
下一篇: 汉诺塔问题——递归
wang1029
博客等级 码龄19年 2粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值