c语言题目之统计二级制数中1的个数

文章目录

  • 题目
  • 一、方法1
  • 二、方法2
  • 三,方法3
  • 总结


题目

统计二进制数中1的个数
输入一行,输出一行
输入: 输入一个整数
输出: 输出存储在内存中二进制的1的个数

一、方法1

之前的文章中,小编写了有关于内存在二进制中的存储方法,正整数在二进制中存储在内存中存储的是二进制的原码,负整数在内存中存储的是二进制的补码。在这里我们随机输入一个整数,假如小编输入15,那么15在内存中存储如下图,然后我们让他按位与上一个1,在操作符中按位与语法就是两个1为1否则为0,在这里我们让15在内存中存储的二进制最低位与上1,然后二进制位右移一位让第二位与上1,因为整数在内存中存储4个字节也就是32个比特位,所以我们只需要向右移动32次就结束即可,下面上代码

在这里插入图片描述

int addcou(int i)
{int flag = 1;int count = 0;int x = 32;while (x != 0){if ((i & 1) == 1){count += 1;>   }i = i >> 1;   x--;   }return count;   
}
int main()   
{int i = 0;   scanf("%d",&i);   int count = addcou(i);   printf("%d",count);   return 0;   
}

在这里插入图片描述

二、方法2

在这里我们输入15,因为是二进制数,也就是说它的存储只有0和1,我们求它的余数要让它的范围为0和1,所以我们进来先让他取模2,在这里我们需要设置一个加数器,在这里如果取模等于1的话,计数器加1,然后再去除以2,这个也就是我们十进制转二进制数的方法,当我们最后除到最后的时候就等于0然后就没有继续换算下去,如下图,接下来上代码理解
在这里插入图片描述

int addcou(unsigned int i) //在这里传进来是有符号数,所以-1不够除,但是如果是无符号数,我们就会把他看成一个很大的整数这样就能求了
{int count = 0;while (i){if ((i % 2) == 1){count++;}i = i / 2;}return count;
}
int main()
{int i = 0;scanf("%d",&i);int count = addcou(i);printf("%d",count);return 0;
}

在这里插入图片描述

分析

在这里为什么传参接收用无符号整型接收呢?假如我们输入-1,而-1在内存中存储的就是它的反码,也就是32个1,但是我们如果我们直接用整型接收,因为系统默认int为有符号整型,我们这里接收-1,-1取模2不够所以得到0,然后在去除以2还是不够值所以得到-1,循环所以就是0个1,但是事实就是-1在内存中存储有32个1,因此我们用无符号整型接收,这样它就默认它二进制数也就是全是1为一个很大的整数,这样就可以统计出二进制中1的个数。

三,方法3

在这里我们接下来看到一个数假设我们输入为15,则二进制位1111,我们这里传入的是n然后让n*(n-1)

n = 15
n = n &(n-1);
1111 n
1110 n-1
1110 n
1101 n-1
1100 n
1011 n-1
1000 n
0111 n-1
0000 n
在这里我们可以发现每次按位与一次就消去一个1,这样我们设置一个计数器,按位与一次加一然后到最后按位与为0结束,接下来上代码理解:

int addcou(int i)
{int count = 0;while (i){i = i & (i - 1);count++;}return count;
}
int main()
{int i = 0;scanf("%d",&i);int count = addcou(i);printf("%d",count);return 0;
}

在这里插入图片描述


总结

以上就是今天要讲的内容,本文仅仅简单介绍了c语言题目之统计二级制数中1的个数的使用,各位读者有其它解法欢迎打在评论区。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/603545.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Fiddler工具 — 8.会话列表(Session List)

1、会话列表说明 Fiddler抓取到的每条HTTP请求(每一条称为一个session)。 主要包含了请求的ID编号、状态码、协议、主机名、URL、内容类型、body大小、进程信息、自定义备注等信息。如下图: 说明: 名称含义#抓取HTTP Request的顺…

Ribbon相关问题及答案(2024)

1、Ribbon是什么,它在微服务架构中扮演什么角色? Ribbon是一个客户端负载均衡器,它在微服务架构中扮演着关键性的角色。Ribbon的设计理念是在客户端进行服务发现和负载均衡,这种方式不同于传统的通过中心化的负载均衡器&#xff…

YHZ018 Python 运算符优先级

资源编号:YHZ018 配套视频:https://www.bilibili.com/video/BV1zy4y1Z7nk?p19 YHZ018:运算符优先级 🪿 运算符优先级 Python支持多种运算符,下表按照优先级从高到低的顺序列出了所有运算符。运算符的优先级决定了在表…

面试算法90:环形房屋偷盗

题目 一条环形街道上有若干房屋。输入一个数组表示该条街道上的房屋内财产的数量。如果这条街道上相邻的两幢房屋被盗就会自动触发报警系统。请计算小偷在这条街道上最多能偷取的财产的数量。例如,街道上5家的财产用数组[2,3,4,5…

js实现全选按钮,反选

点击全选按钮&#xff0c;下面的按钮全部选中&#xff1b;再次点击&#xff0c;全部取消选择。 点击下面的按钮时&#xff0c;检查下面的按钮是不是全部都选中&#xff0c;如果全部选中了&#xff0c;需要修改全选按钮的选中状态为ture。 全选反选 <!DOCTYPE html> <…

Linux系统IO—探索输入输出操作的奥秘

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;HEART BEAT—YOASOBI 2:20━━━━━━️&#x1f49f;──────── 5:35 &#x1f504; ◀️ ⏸ ▶️ ☰ …

c++之迭代器

目录 一、迭代器 二、几种常见的迭代器类型 三、使用迭代器时注意事项 一、迭代器 在C中&#xff0c;迭代器是一种用于遍历容器元素的对象。迭代器提供了一种通用的方式来访问各种不同类型的容器&#xff0c;如数组、向量、列表、集合和映射等。 使用迭代器可以避免直接操作…

三、Qt核心与Qt类库

一、Qt核心&#xff1a;元对象系统 1、Qt核心特点 Qt对标准C进行了扩展&#xff0c;引入了一些新的概念和功能元对象编译器&#xff08;MOC&#xff09;是一个预处理器&#xff0c;先将Qt的特性程序转为标准C程序&#xff0c;再由标准C编译器进行编译Qt为C语言增加的特性在Qt…

提升开发效率:npm包管理器的使用技巧

文章目录 一、npm简介二、npm的基本操作1. 安装Node.js和npm2. 创建和管理项目3. 安装依赖4. 卸载依赖5. 更新依赖 三、npm的高级特性1. 使用不同版本的依赖项2. 查看已安装的依赖项和它们的版本信息3. 运行脚本命令 《Node.js从入门到精通&#xff08;软件开发视频大讲堂&…

09-生成器模式(Builder)模式

意图 将一个复杂对象的构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 理解 如果构建一个对象的的过程会比较复杂&#xff0c;或者说在写代码的过程中&#xff0c;需要比较频繁地构建某个对象&#xff0c;那么可以针对这个对象写一个专门用于构建这…

2024前端炫酷源码分享(附效果图及在线演示)

分享10款非常有趣的前端特效源码 其中包含css动画特效、js原生特效、svg特效以及小游戏等 下面我会给出特效样式图或演示效果图 但你也可以点击在线预览查看源码的最终展示效果及下载源码资源 GSAP-火箭动画特效 GSAP 火箭动画 当氮气充足的情况下 火箭会冲出 并继续飞行 图片…

C#,字符串匹配算法(模式搜索)Z算法的源代码与数据可视化

Z算法也是模式搜索&#xff08;Pattern Search Algorithm&#xff09;的常用算法。 本文代码的运算效果&#xff1a; 一、Z 算法 线性时间模式搜索算法的Z算法&#xff0c;在线性时间内查找文本中模式的所有出现。 假设文本长度为 n&#xff0c;模式长度为 m&#xff0c;那么…

【Spring Cloud 】进阶之Config配置中心

目录 config大致的一个思路&#xff1a; 二&#xff0c;前期准备 2.1导入依赖 2.2编写bootstrop.yml&#xff1a; 三&#xff0c;编写Controller类 3.1获取单个配置类信息 3.2获取多个配置类信息 &#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f3…

Linux习题6

解析&#xff1a;排序必须得是rwx,所以B不对 解析&#xff1a; /etc/resolv.conf&#xff1a;是DNS配置文件。在网卡配置文件中进行配置&#xff0c;默认情况下&#xff0c;网卡配置文件DNS优于/etc/resolv.conf。 /etc/hostname&#xff1a;在centos7&#xff0c;配置主机名…

Linux时间同步和时间设置

时间分为&#xff1a; 1、hwclock&#xff1a;用于查看硬件时间 hwclock -r&#xff08;--show&#xff1a;读取硬件时钟并打印结果&#xff09; &#xff1a;查看硬件时间 hwclock -s &#xff1a;系统时间向硬件时间同步 hwclock -w &#xff1a;硬件时间向系统时间同步 …

我的第一个前端项目,vue项目从零开始创建和运行

​入门前端&#xff0c;从基础做起&#xff0c;从零开始新建项目 背景&#xff1a;VUE脚手架项目是一个“单页面”应用&#xff0c;即整个项目中只有1个网页&#xff01; 在VUE脚手架项目中&#xff0c;主要是设计各个“视图组件”&#xff0c;它们都是整个网页中某个部分&…

TypeScript 从入门到进阶之基础篇(六) 类型(断言 、推论、别名)| 联合类型 | 交叉类型

系列文章目录 TypeScript 从入门到进阶系列 TypeScript 从入门到进阶之基础篇(一) ts基础类型篇TypeScript 从入门到进阶之基础篇(二) ts进阶类型篇TypeScript 从入门到进阶之基础篇(三) 元组类型篇TypeScript 从入门到进阶之基础篇(四) symbol类型篇TypeScript 从入门到进阶…

自用PHP在线Access转html表格小功能(快速预览access)

自用PHP在线Access转html表格小功能(支持大文件上传,得到一表一文件) 本工具用于Access数据表转html下载供预览,特别适合各类程序员。 开发环境(可能只支持)Windows IIS PHP5.4 其他系统或新版本都不支持 <?php /* //自用PHP在线Access转html表格小功能(支持大文件上传,得…

一篇五分生信临床模型预测文章代码复现——Figure 10.机制及肿瘤免疫浸润(十)——Cibersort——完结

之前讲过临床模型预测的专栏,但那只是基础版本,下面我们以自噬相关基因为例子,模仿一篇五分文章,将图和代码复现出来,学会本专栏课程,可以具备发一篇五分左右文章的水平: 本专栏目录如下: Figure 1:差异表达基因及预后基因筛选(图片仅供参考) Figure 2. 生存分析,…

关于目标检测中按照比例将数据集随机划分成训练集和测试集

1. 前言 在做目标检测任务的时候&#xff0c;不少网上的数据&#xff0c;没有划分数据集&#xff0c;只是将数据和标签放在不同的文件夹下&#xff0c;没有划分数据集 虽然代码简单&#xff0c;每次重新编写还是颇为麻烦&#xff0c;这里记录一下 如下&#xff0c;有的数据集…