C语言:求两个数二进制中不同位的个数

news2024/11/20 8:40:12

题目:

编程实现:两个int(32位)整数 m n 二进制表达中,有多少个位(bit)不同

              

输入例子 :

1999 2299

               

输出例子 : 7

                    

 =========================================================================

                       

思路:

总体思路:

m 异或 n 后,有几个相异就有几个1,再计算下二进制有几个1即可

          

(1). 编写函数:number_of_1() 计算二进制中有几个1

               

(2). 在主函数中,把 m ^ n (m 异或 n)的结果作为参数传给 number_of_1() 函数

                


                 

第一步:

编写函数:number_of_1() 计算二进制中有几个1

           

(1). 函数返回值:int 返回二进制中1的个数

函数形参:int m

                   

(2). 设置计数器 count统计二级制中 1 的个数

             

(3). 使用 while循环,循环统计,只要m不为0就继续循环

              

(4). 使用 m = m & (m - 1); -- 去掉二进制中最右边的1,再赋给m本身

去掉一个1,计数器count就++

                     

实现代码:

#include <stdio.h>

//编写函数:
int number_of_1(int m)
//函数返回值:int ; 函数形参:int m
{
	//设置计数器:
	int count = 0;

	//使用while循环
	while (m) 
	//如果m不为0,就说明二进制中还有1,则继续循环
	{
		//使用公式:
		m = m & (m - 1); //去掉最右边的1
		count++; //计数器++
	}
}

int main()
{
	
	return 0;
}

实现图片:

                 


                 

第二步:

主函数:

                 

(1). 输入两个参数:m 和 n

             

(2). 把 m ^ n (m 异或 n)的结果作为参数传给 number_of_1() 函数

用一个变量接收返回值

                 

(3). 打印返回值

                     

实现代码:

#include <stdio.h>

//编写函数:
int number_of_1(int m)
//函数返回值:int ; 函数形参:int m
{
	//设置计数器:
	int count = 0;

	//使用while循环
	while (m) 
	//如果m不为0,就说明二进制中还有1,则继续循环
	{
		//使用公式:
		m = m & (m - 1); //去掉最右边的1
		count++; //计数器++
	}
}

int main()
{
	//输入两个数:
	int m = 0;
	int n = 0;
	scanf("%d %d", &m, &n);

	//异或:相同为0,相异为1
	int ret = number_of_1(m ^ n);

	//打印:
	printf("%d", ret);

	return 0;
}

实现图片:

                    

最终代码和实现效果

最终代码:

#include <stdio.h>

//编写函数:
int number_of_1(int m)
//函数返回值:int ; 函数形参:int m
{
	//设置计数器:
	int count = 0;

	//使用while循环
	while (m) 
	//如果m不为0,就说明二进制中还有1,则继续循环
	{
		//使用公式:
		m = m & (m - 1); //去掉最右边的1
		count++; //计数器++
	}
}

int main()
{
	//输入两个数:
	int m = 0;
	int n = 0;
	scanf("%d %d", &m, &n);

	//异或:相同为0,相异为1
	int ret = number_of_1(m ^ n);

	//打印:
	printf("%d", ret);

	return 0;
}

实现效果:

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

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

相关文章

抢占父亲节市场:2023年出海品牌的海外网红营销策略揭秘

随着社交媒体的迅猛发展和全球化的趋势&#xff0c;网红营销已经成为品牌推广的一种重要方式。在父亲节这个特殊的节日里&#xff0c;出海品牌可以通过巧妙利用网红的影响力来推动产品销售和品牌知名度的提升。本文Nox聚星将详细介绍如何通过海外网红营销来提升品牌知名度和销售…

HarmonyOS学习路之开发篇—Java UI框架(动画开发)

动画开发 动画是组件的基础特性之一&#xff0c;精心设计的动画使UI变化更直观&#xff0c;有助于改进应用程序的外观并改善用户体验。Java UI框架提供了帧动画、数值动画和属性动画&#xff0c;并提供了将多个动画同时操作的动画集合。 帧动画 帧动画是利用视觉暂留现象&…

[电离层建模学习笔记]开源程序M_GIM学习记录

[电离层建模学习笔记]开源程序M_GIM学习记录 文章目录 [电离层建模学习笔记]开源程序M_GIM学习记录1. 程序相关信息2. 程序学习记录2.1 采用的数据说明2.2 程序运行前2.3 程序运行结果 3. 其他 1. 程序相关信息 开源程序M_GIM基于Matlab(Zhou et al., 2023)&#xff0c;用于实…

js数组高阶函数——includes()方法

js数组高阶函数——includes方法 前言数组的一般化操作创建数组获取数组长度访问&#xff08;遍历&#xff09;数组元素修改数组元素删除数组元素数组尾部添加数组尾部删除 includes&#xff08;&#xff09;方法举例说明关键点 前言 ⭐JS的数组是一种特殊的对象&#xff0c;其…

SSH通过VSCode远程访问服务器Opencv和matplotlib等无法直接显示图像问题

需求描述&#xff1a; 在VSCode中通过SSH连接服务器&#xff0c;使用cv2.imshow或plt.show()无法显示图像。 解决思路如下&#xff1a; 1、首先查看与服务器之间的网络连接问题&#xff08;百分之九十问题就是出在第一步骤&#xff0c;哈哈哈&#xff09; 在本地端打开cmd&…

「案例」95后占半壁江山的浙桂,如何在百家争鸣中快人一步

如果用一个历史时期来形容目前国内单光子雪崩二极管&#xff08;SPAD&#xff09;传感器芯片的市场格局&#xff0c;那就是——春秋。 各家IC设计公司百家争鸣&#xff0c;而浙桂半导体就是其中的“百分之一”。 浙桂半导体两大特点 一、浙桂研发SPAD传感器芯片需要召唤像元、…

C语言实现字符串的模式匹配

一.模式匹配 字符串的模式匹配算法是用来查找一个字符串中是否存在另一个指定的字符串&#xff08;即模式&#xff09;的算法。常见的模式匹配算法包括暴力匹配算法、KMP算法、Boyer-Moore算法和Rabin-Karp算法。 暴力匹配算法&#xff1a;暴力匹配算法也称为朴素匹配算法&am…

自学黑客!一般人我劝你还是算了吧

一、自学网络安全学习的误区和陷阱 1.不要试图以编程为基础的学习开始学习 我在之前的回答中&#xff0c;我都一再强调不要以编程为基础再开始学习网络安全&#xff0c;一般来说&#xff0c;学习编程不但学习周期长&#xff0c;而且实际向安全过渡后可用到的关键知识并不多 一…

【Java之JAR包解析】(三)除核心包 rt.jar之外的其他JAR包~

JAR包解析之其他jar包 前言:one: access-bridge-64.jar:two: charsets.jar:three: cldrdata.jar:four: deploy.jar:five: jce.jar:six: jfr.jar:seven: jfxrt.jar:eight: jfxswt.jar:nine: jsse.jar:keycap_ten: localedata.jar11、management-agent.jar12、nashorn.jar13、plu…

开发人员Git仓库提交与合并

参考&#xff1a;git 的变基(rebase)和合并(merge)具体有什么分别阿&#xff1f; - 知乎 1、Git工作流 在使用Git Flow工作模式时&#xff0c;业界普遍遵循的规则&#xff1a; 所有开发分支从develop分支拉取。所有hotfix分支从master分支拉取。所有在master分支上的提交都必…

flstudio21.0.3中文版水果软件下载

FL Studio就是国人众所熟知的水果编曲软件&#xff0c;圈内用户习惯叫它“水果”。它是一个全能音乐制作环境或数字音频工作站&#xff08;DAW&#xff09;。FL Studio可以进行编曲、剪辑、录音、混音&#xff0c;让你的电脑变成全功能录音室&#xff0c;帮助你制作出属于自己的…

轻量服务器架设网站打开速度慢,如何加速?

轻量服务器非常适合流量适中的小、中型网站&#xff0c;虽作为轻量级主机包&#xff0c;但它一般与云服务器使用同样的 CPU、内存、硬盘等底层资源。只是&#xff0c;轻量服务器的资源(可用的存储空间、RAM 和 CPU等硬件/内存容量)更低&#xff0c;虽然这些对于较中、小的网站来…

GEN回零调试

一.根据motionstudio软件检测各部件完备&#xff1b; 二.调试点位模式的CPP测试程序 其中&#xff0c;配置文件如下&#xff1a; 回零相关&#xff08;就是轴状态同步&#xff09;&#xff1a; 下面是相关代码: // 例程 7-1 点位运动 //#include "stdafx.h" #inclu…

selenium自动化的时候网址重定向问题的解决思路

一、背景 因为我们系统是用企业微信扫码登录的&#xff0c;就输入网址 management-xxx.xxx.com以后&#xff0c;url就会重定向到企业微信授权的url &#xff1a;https://open.work.weixin.qq.com/wwopen/sso/3rd_qrConnect?statexxx&redirect_urimanagement-xxx.xxx.com …

如何制作数据可视化、数孪、安防、区域人流量识别+控制的项目?

制作与数据可视化、数字孪生、安防、区域人群识别和控制以及其他类似计划相关的项目需要仔细规划和执行。建议遵循以下通用框架来有效地开发这些项目&#xff1a; 定义项目目标&#xff1a;清楚地阐明项目目的和目标。确定要解决的具体问题、期望的结果以及衡量成功的关键绩效指…

vue3+ts+vite+electron打包exe

文章目录 一. 前言二. 准备写好的vue项目打包2.1 修改ts打包代码检测.这个比较烦人. 在package.json中 2.2 配置打包参数2.3 打包vue 三. 打包exe3.1 拉取electron官方demo3.2 下载打包插件3.3 在electron-quick-start项目中找到入口文件 main.js &#xff0c;修改打包的文件路…

差值结构的运动

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入有3个节点&#xff0c;训练集AB各由5张二值化的图片组成&#xff0c;让B全是0&#xff0c;让差值结构的5行分别有0&#xff0c;1&#xff0c;2&#xff0c;2&#xff0c;2个1&#xff0c;3列分别有1&#xff0c;3&#xff0…

知了堂Java V9.0重磅升级,真的很硬核!

“2023年&#xff0c;Java还值得学吗&#xff1f;” 说实话&#xff0c;Java自1995年诞生起&#xff0c;至今还难逢敌手&#xff0c;没有任何编程语言能够取代它的地位。不过随着互联网、计算机技术的发展&#xff0c;Java应用领域越来越广泛&#xff0c;因此也对掌握这门语言…

Vue全家桶(二):Vue中的axios异步通信

目录 1. Axios1.1 Axios介绍1.2 为什么使用Axios1.3 Axios API1.3 Vue使用axios向服务器请求数据1.4 Vue使用axios向服务器提交数据1.5 Vue封装网络请求 2. 使用Vue-cli解决Ajax跨域问题3. GitHub用户搜索案例4. Vue-resource 1. Axios 1.1 Axios介绍 Axios 是一个开源的可以…

flexible.js + rem 适配布局

什么是&#xff1a;flexible.js &#xff1f;&#xff1f; flexible.js 是手机淘宝团队出的移动端布局适配库不需要在写不同屏幕的媒体查询&#xff0c;因为里面js做了处理原理是把当前设备划分为10等份&#xff0c;但是不同设备下&#xff0c;比例还是一致的。要做的&#xf…