【求两个数二进制中不同位的个数】

news2025/4/16 15:02:02

求两个数二进制中不同位的个数

1.题目

编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
输入例子:1999 2299
输出例子:7

2.题目分析

  1. 先将m和n进行按位异或,此时m和n相同的二进制比特位清零,不同的二进制比特位为1
  2. 统计异或完成后结果的二进制比特位中有多少个1即可

3.解法实现

3.1解法一:&

3.1.1函数实现

//方法一
int Count(int n, int m)
{
	int i = 31;
	int count = 0;
	printf("%d的二进制位: ", n);
	for(i=31;i>=0;i--)
	{
		printf("%d ", (n >> i) & 1);
	}
	printf("\n");
	printf("%d的二进制位:", m);
	for(i=31;i>=0;i--)
	{
		printf("%d ", (m >> i) & 1);
	}
	printf("\n");
	for (int i = 0; i <= 31; i++)  
			{
			    if (((n >> i) & 1) != ((m >> i) & 1))
			    {
			            count++;
			    }
			 }
	return count;

}

3.1.2实际代入

//方法一
#include<stdio.h>
int Count(int n, int m)
{
	int i = 31;
	int count = 0;
	printf("%d的二进制位: ", n);
	for(i=31;i>=0;i--)
	{
		printf("%d ", (n >> i) & 1);
	}
	printf("\n");
	printf("%d的二进制位:", m);
	for(i=31;i>=0;i--)
	{
		printf("%d ", (m >> i) & 1);
	}
	printf("\n");
	for (int i = 0; i <= 31; i++)  
			{
			    if (((n >> i) & 1) != ((m >> i) & 1))
			    {
			            count++;
			    }
			 }
	return count;

}
int main()
{
	int n = 0;
	int m = 0;
	scanf("%d %d", &n, &m);
	printf("%d和%d的二进制位有%d个不同", n, m, Count(n, m));
    return 0;
}

3.1.3运行结果举例

在这里插入图片描述

解法二 :^ &

3.2.1函数实现

//方法二
int Count(int n, int m)
{
	int i = 31;
	int count = 0;
	printf("%d的二进制位: ", n);
	for (i = 31; i >= 0; i--)
	{
		printf("%d ", (n >> i) & 1);
	}
	printf("\n");
	printf("%d的二进制位:", m);
	for (i = 31; i >= 0; i--)
	{
		printf("%d ", (m >> i) & 1);
	}
	printf("\n");
	int N = n ^ m;
	while (N)
	{
		N = N & (N - 1);
		count++;
	}
	return count;
}

3.2.2实际代入

//方法二
#include<stdio.h>
int Count(int n, int m)
{
	int i = 31;
	int count = 0;
	printf("%d的二进制位: ", n);
	for (i = 31; i >= 0; i--)
	{
		printf("%d ", (n >> i) & 1);
	}
	printf("\n");
	printf("%d的二进制位:", m);
	for (i = 31; i >= 0; i--)
	{
		printf("%d ", (m >> i) & 1);
	}
	printf("\n");
	int N = n ^ m;
	while (N)
	{
		N = N & (N - 1);
		count++;
	}
	return count;
}
int main()
{
	int n = 0;
	int m = 0;
	scanf("%d %d", &n, &m);
	printf("%d和%d的二进制位有%d个不同", n, m, Count(n, m));
	return 0;
}

3.2.3运行结果举例

在这里插入图片描述

解法三:% /

3.3.1函数实现

//方法三
int Count(int n, int m)
{
	int i = 31;
	int count = 0;
	printf("%d的二进制位: ", n);
	for (i = 31; i >= 0; i--)
	{
		printf("%d ", (n >> i) & 1);
	}
	printf("\n");
	printf("%d的二进制位:", m);
	for (i = 31; i >= 0; i--)
	{
		printf("%d ", (m >> i) & 1);
	}
	printf("\n");

	for (int i = 0; i <=31; i++)
	{
		if ((n % 2) != (m % 2))
		  {
			count++;
		  }
		n /= 2;
		m /= 2;
	}
	return count;
}

3.3.2实际代入

//方法三
#include<stdio.h>
int Count(int n, int m)
{
	int i = 31;
	int count = 0;
	printf("%d的二进制位: ", n);
	for (i = 31; i >= 0; i--)
	{
		printf("%d ", (n >> i) & 1);
	}
	printf("\n");
	printf("%d的二进制位:", m);
	for (i = 31; i >= 0; i--)
	{
		printf("%d ", (m >> i) & 1);
	}
	printf("\n");

	for (int i = 0; i < 32; i++)
	{
		if ((n % 2) != (m % 2))
		  {
			count++;
		  }
		n /= 2;
		m /= 2;
	}
	return count;
}
int main()
{
	int n = 0;
	int m = 0;
	scanf("%d %d", &n, &m);
	printf("%d和%d的二进制位有%d个不同", n, m, Count(n, m));
	return 0;
}

3.3.3运行结果举例

在这里插入图片描述

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

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

相关文章

多线程知识点总结

这个更清晰一点 JAVA多线程-ProcessOnhttps://www.processon.com/mindmap/64d06633b9f7806c73e70d92

统计列表加小计

提供个思路&#xff0c;欢迎其他大佬指正 注意使用 排序&#xff08;seq&#xff09;&#xff0c;group by&#xff0c;union all SELECTf.* FROM(SELECTcus_id,max( cusname ) cusname,NULL dodate,sum( money ) sumMoney,NULL payed,NULL unpayed,1 seq FROMtb_outbase GRO…

如何在群辉NAS系统下安装cpolar套件,并使用cpolar内网穿透?

如何在群辉NAS系统下安装cpolar套件,并使用cpolar内网穿透&#xff1f; 文章目录 如何在群辉NAS系统下安装cpolar套件,并使用cpolar内网穿透&#xff1f;前言1. 在群辉NAS系统下安装cpolar套件2. 管理隧道列表3. 创建固定数据隧道 前言 群晖作为大容量存储系统&#xff0c;既可…

uniapp开发小程序-分包(微信错误码:800051)

在使用uniapp开发小程序时&#xff0c;上传的时候因为文件过大&#xff0c;显示上传失败。 以下是开发过程中遇到的问题及解决方法&#xff1a; 1. 问题一&#xff1a;因为文件过大&#xff0c;显示上传失败 ①尝试过把本地使用的图片压缩到最小&#xff1b; ②把图片转换为网…

某运动APP的登录协议分析

前言 最近在尝试逆向方向相关的探索&#xff0c;针对某款运动APP的登录协议进行了分析&#xff0c;此文记录一下分析过程与结果&#xff0c;仅供学习研究&#xff0c;使用的工具较少&#xff0c;内容也比较简单&#xff0c;新手项&#xff0c;大佬请跳过。针对密码登录模块进行…

SpringBoot整合WebSocket实现定时任务消息推送

在平时项目开发中&#xff0c;肯定有很多小伙伴会需要实现定时向某个页面推送消息的功能&#xff0c;为了解决大家无从下手的问题&#xff0c;加哥今天展示一套简单的代码解决方案。 1.创建WebSocketConfig配置类 在这个类中注入ServerEndpointExporter&#xff0c;这个bean会…

vmwera中安装的centos8出现ifconfig不可用

刚刚在虚拟机中装好centos结果发现自己的ifconfig命令不可用。 看一下环境变量里有没有ifconfig命令的路径&#xff0c;因为ifconfig是在/sbin路径下的&#xff0c;root用户登录进去才可以运行&#xff0c;先看一下root用户的环境变量。 root用户的环境变量里是有/sbin路径的&a…

数据链路层 -帧结构

帧结构 802.3 有线网卡的帧格式802.11 无线网卡的帧格式 802是指一个国际标准委员会 IEEE 802 帧头主要包括三个部分&#xff1a; 目标MAC&#xff08;6个字节&#xff09;源MAC &#xff08;6个字节&#xff09;类型 &#xff08;包含两种类型&#xff1a;0x0800【IP协议】 …

【生成式AI】ProlificDreamer论文阅读

ProlificDreamer 论文阅读 Project指路&#xff1a;https://ml.cs.tsinghua.edu.cn/prolificdreamer/ 论文简介&#xff1a;截止2023/8/10&#xff0c;text-to-3D的baseline SOTA&#xff0c;提出了VSD优化方法 前置芝士:text-to-3D任务简介 text-to-3D Problem text-to-3D…

关于Postman如何配置随请求携带token

文章目录 一些吐槽实际应用 一些吐槽 首先吐槽一下 postman官网的文档说明&#xff0c;真是乱七八糟&#xff0c;一点都不清晰&#xff0c;能不能好好写用户手册啊&#xff08;比如把用户都当作初始小白&#xff09; 然后吐槽一下网上铺天盖地让我写js脚本应用全局access toke…

leetcode - 75. 颜色分类(java)

颜色分类 leetcode - 75. 颜色分类题目描述双指针代码演示 双指针算法专题 leetcode - 75. 颜色分类 难度 - 中等 原题链接 - 颜色分类 题目描述 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums &#xff0c;原地对它们进行排序&#xff0c;使得相同颜色的元素相邻&…

Ansys Lumerical | 米氏散射 FDTD

计算平面波激发的纳米粒子的散射和吸收截面、局部场增强和远场散射分布&#xff08;Mie 散射&#xff09;。将截面和远场结果与解析解进行比较&#xff0c;以验证仿真的准确性。&#xff08;联系我们获取文章附件&#xff09; 概述 纳米粒子的散射特性通常用场增强、横截面和远…

AtcoderABC223场

A - Exact PriceA - Exact Price 题目大意 高橋的钱包里只有一个或多个100日元硬币&#xff0c;没有其他的东西。现在给定一个金额X&#xff0c;需要判断是否可能存在这样的情况&#xff0c;使得钱包中的总金额是X日元。 思路分析 根据题目要求&#xff0c;钱包中只有100日元…

【Yolov5+Deepsort】训练自己的数据集(2)| 目标检测追踪 | 轨迹绘制

&#x1f4e2;前言&#xff1a;本篇是关于如何使用YoloV5Deepsort训练自己的数据集&#xff0c;从而实现目标检测与目标追踪&#xff0c;并绘制出物体的运动轨迹。本章讲解的为第二部分内容&#xff1a;训练集的采集与划分&#xff0c;Yolov5模型的训练。本文中用到的数据集均为…

【C语言学习——————文件处理操作的简单介绍与讲解】

欢迎阅读新一期的c语言学习模块————文件处理操作 ✒️个人主页&#xff1a;-_Joker_- &#x1f3f7;️专栏&#xff1a;C语言 &#x1f4dc;代码仓库&#xff1a;c_code &#x1f339;&#x1f339;欢迎大佬们的阅读和三连关注&#xff0c;顺着评论回访&#x1f339;&#…

【工作记录】mysql中实现分组统计的三种方式

前言 实际工作中对范围分组统计的需求还是相对普遍的&#xff0c;本文记录下在mysql中通过函数和sql完成分组统计的实现过程。 数据及期望 比如我们获取到了豆瓣电影top250&#xff0c;现在想知道各个分数段的电影总数. 表数据如下: 期望结果: 实现方案 主要思路是根据s…

国产芯力特Mini LIN SBC SIT1028Q应用方案,可替代TJA1028

SIT1028Q是一款内部集成高压LDO稳压源的本地互联网络&#xff08;LIN&#xff09;物理层收发器&#xff0c;可为外部ECU&#xff08;Electronic Control Unit&#xff09;微控制器或相关外设提供稳定的5V/3.3V电源&#xff0c;该LIN收发器符合LIN2.0、LIN2.1、LIN2.2、LIN2.2A、…

学习嵌入式系统的推荐步骤:

C语言&#xff1a;作为基础中的基础&#xff0c;选择一本常用的C语言教材&#xff0c;并注意通过实践编写习题、编译运行代码来加深理解。动手实践是非常重要的。 微机原理与接口技术&#xff1a;这本教材将帮助你了解CPU的基本结构、工作原理以及与外设的交互。虽然开始可能有…

手把手教你如何从零开始搭建自己的鞋店商城

对于不懂技术的新手来说&#xff0c;建立一个鞋店商城可能会显得有些困难。然而&#xff0c;现在有一些方便易用的网站建设平台可以帮助您快速搭建一个鞋店商城。本文将介绍乔拓云网的建站教程&#xff0c;让您轻松完成建站。 步骤1&#xff1a;注册乔拓云网账号并登录 首先&a…

苹果Mac像Windows一样使用

一、将磁盘访问设置的像Windows一样&#xff1a; 1.1、点击任务栏第一个按钮打开“访达”&#xff0c;点击菜单栏上的访达-偏好设置&#xff1a; 1.2、勾选“硬盘”&#xff0c;这样macOS的桌面上就会显示一个本地磁盘&#xff0c;之后重命名为磁盘根&#xff0c;相当于window…