C语言习题练习8--二进制操作符

news2024/9/22 1:02:24

IO型--从main函数开始写,要写输入、计算、输出

接口型--不需要写主函数,默认主函数是存在的,你只需要完成函数就行 

一、二进制中1的个数

(12条消息) C语言丨关键字signed和unsigned 的使用与区别详解_Emily-C的博客-CSDN博客_signed unsigned

十进制中10的32位二进制表示为0000 0000 0000 0000 0000 0000 0000 1010,其中有两个1。 
负数使用补码表示 ,-1的32位二进制表示为1111 1111 1111 1111 1111 1111 1111 1111,其中32个1  

二进制中1的个数__牛客网 (nowcoder.com)

1.模2得一位,除2去一位 

int NumberOf1(unsigned int n) //unsigned无符号
{
	int count = 0;
	while (n)
	{
		if (n % 2 == 1)
			count++;
		n = n / 2;
	}
	return count;
}

2.每执行一次,右边的1就没了

n=n&(n-1)

n=11(10进制)

n=1011

n-1=1010

n&(n-1)=1010

int NumberOf1(int n)
{
	int count = 0;
	while (n)
	{
		n = n & (n - 1);//
		count++;
	}
	return count;
}

 二、获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列

void Print(int n)
{
	int i = 0;
	printf("奇数位: ");
	for (i = 30; i >=0; i -= 2)
	{
		printf("%d ", (n >> i) & 1);
	}
	printf("\n");

	printf("偶数位: ");
	for (i = 31; i >= 1; i -= 2)
	{
		printf("%d ", (n >> i) & 1);
	}
	printf("\n");
}



int main()
{
	int n = 0;
	scanf("%d", &n);
	Print(n);
	return 0;
}

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

(1)

int Dif(int n, int m)
{
	int i = 0;
	int count = 0;
	for (i = 0; i < 32; i++)
	{
		if (((n >> i) & 1) != ((m >> i) & 1))
		{
			count++;
		}
	}
	return count;
}

int main()
{
	int n = 0;
	int m = 0;
	scanf("%d %d", &n, &m);
	int ret=Dif(n,m);
	printf("%d\n", ret);
	return 0;
}

 (2)

在C语言里这个符号“ ∧ ”表示“按位异或”运算符。

例:

^ 按位异或

AND (位与&) OR ( 位或| ) XOR ( 位异或^ )

1 & 1 = 1, 1 | 1 = 1, 1 ^ 1 = 0

1 & 0 = 0, 1 | 0 = 1, 1 ^ 0 = 1

0 & 1 = 0, 0 | 1 = 1, 0 ^ 1 = 1

0 & 0 = 0, 0 | 0 = 0, 0 ^ 0 = 0

//异或操作符

//相同为0,相异为1

int Dif(int n, int m)
{
	int count = 0;
	int tmp = m ^ n;//相同为0,相异为1
	while (tmp)
	{
		tmp = tmp & (tmp - 1);//去掉最右边的1
		count++;
	}
	return count;
}

int main()
{
	int n = 0;
	int m = 0;
	scanf("%d %d", &n, &m);
	int ret=Dif(n,m);
	printf("%d\n", ret);
	return 0;
}

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

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

相关文章

【笔记】samba shell 脚本 离线安装 - Ubuntu 20.04

前言 按照官网调试代码、网上各种步骤来走&#xff08;还收费&#xff09;都不行 结果发现是防火墙问题 公司服务器安装的ufw使用失效&#xff0c;导致端口号放行添加失败 换用firewall-cmd成功 现在免费放下代码&#xff0c;气死他们收费的 目录 ├── home│ ├── k…

linux备份mysql8.0数据库脚本

文章目录环境要求步骤1、创建一个.sh文件编写shell脚本2、添加定时任务环境要求 linux系统&#xff0c;安装了mysql8.0 步骤 1、创建一个.sh文件编写shell脚本 创建文件的命令&#xff1a; vim ***.shshell文件文件参考自文章 链接 export LANGen_US.UTF-8 #注意&#xf…

测试开发技术:Python测试框架Pytest的基础入门

Pytest简介 Pytest is a mature full-featured Python testing tool that helps you write better programs.The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries. 通过官方网站介绍…

十五、Lua 协同程序(coroutine)的学习

Lua 协同程序(coroutine) 什么是协同(coroutine)&#xff1f; Lua 协同程序(coroutine)与线程比较类似&#xff1a;拥有独立的堆栈&#xff0c;独立的局部变量&#xff0c;独立的指令指针&#xff0c;同时又与其它协同程序共享全局变量和其它大部分东西。 协同是非常强大的功…

2646-61-9, 脯氨酰内肽酶(PEP)底物: Z-GPLGP-OH

编号: 160473中文名称: 脯氨酰内肽酶&#xff08;PEP&#xff09;底物&#xff1a;Z-Gly-Pro-Leu-Gly-ProCAS号: 2646-61-9单字母: Z-GPLGP-OH三字母: Cbz-Gly-Pro-Leu-Gly-Pro-COOH氨基酸个数: 5分子式: C28H39O8N5平均分子量: 573.64精确分子量: 573.28等电点(PI): -pH7.0时的…

Arduino程序设计(三) 光照采集 + 温度采集

光照采集 温度采集前言一、光敏电阻检测环境光二、DS18B20检测环境温度总结参考文献前言 本文主要介绍两种常见的传感器采集环境参数&#xff0c;即光照传感器和温度传感器。光照传感器采用光敏电阻GL3516&#xff08;5-10K&#xff09;检测环境光。温度传感器采用DS18B20检测…

2022Q3家电行业高增长细分市场分析(含热门品类数据)

2022年&#xff0c;在大环境的影响下&#xff0c;大众消费偏好更趋于理性化、追求高性价比&#xff0c;不少行业增速有所放缓&#xff0c;在此背景下&#xff0c;2022年Q3季度中&#xff0c;消费市场中仍有一些高增长概念涌现。 在家电行业中&#xff0c;我们发现了3个高增长品…

【重识云原生】第六章容器基础6.4.9.5节——端点切片(Endpoint Slices)

1 EndpointSlice特性 Kubernetes v1.21 [stable] 端点切片&#xff08;EndpointSlices&#xff09; 是一个新 API&#xff0c;它提供了 Endpoint API 可伸缩和可拓展的替代方案。EndpointSlice 会跟踪 Service Pod 的 IP 地址、端口、readiness 和拓扑信息。 在 Kubernetes v…

一文看懂页面置换算法

页面置换算法分为两类 1、局部页面置换算法 最优页面置换算法&#xff08;OPT、optimal&#xff09;先进先出算法&#xff08;FIFO&#xff09;最近最久未使用算法&#xff08;LRU,Least Recently Used&#xff09;时钟页面置换算法&#xff08;Clock&#xff09;最不常用算法…

【算法 | 实验18】在字符矩阵中查找给定字符串的所有匹配项

文章目录题目描述思路分析bug记录&#xff1a;"error: >> should be > > within a nested template argument list"代码题目描述 题目 在字符矩阵中查找给定字符串的所有匹配项 给定一个MN字符矩阵&#xff0c;以及一个字符串S&#xff0c;找到在矩阵中所…

给Git仓库添加.gitignore:清理、删除、排除被Git误添加的临时文件

文章目录一、前言二、发现提交的临时文件三、去掉临时文件的方法3.1 添加.gitignore3.2 删除临时文件缓存3.3 添加后的效果一、前言 最近维护代码过程中&#xff0c;发现某APP代码库里被提交了许多临时文件&#xff0c;而这些临时文件每次都会变化&#xff0c;所以导致每次修改…

为什么要写单测

一、什么是单元测试 “在计算机编程中&#xff0c;单元测试又称为模块测试&#xff0c;是针对程序模块来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中&#xff0c;一个单元就是单个程序、函数、过程等&#xff1b;对于面向对象编程&#xff0c;最…

大屏经典组件:“无限滚动” 从分析到开发

&#x1f4d6;阅读本文&#xff0c;你将 理解大屏 “无限滚动组件” 的开发思路跟随作者&#xff0c;一步步完成一个高性能 “无限滚动组件” 的开发收获一份该实现的粗糙源码。 一、无限滚动&#xff1a;事件/告警 的有力帮手 1.1 为什么需要滚动列表 大屏之所以 “炫酷” …

稳压二极管稳压电路如何设计

在一些电流不大的地方&#xff0c;一般毫安级别&#xff0c;有时候我们可以利用稳压二极管去设计一个我们需要的电压。 大家可以看下稳压二极管的伏安曲线 在反向电压下&#xff0c;尽管电流在很大的范围内变化&#xff0c;而稳压二极管两端的电压却基本上稳定在击穿电压附近&a…

[附源码]java毕业设计旅游产品销售管理

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

CISCN 2022 初赛 web 复现

[CISCN 2022 初赛]ezpop 可以看到版本&#xff0c;那么直接上网找链子打 www.zip 查看路由&#xff0c;是 Index/test&#xff0c;然后 post 传参 a <?php // 保证命名空间的一致 namespace think {// Model需要是抽象类abstract class Model {// 需要用到的关键字priv…

【vue】vuex中modules的基本用法

1&#xff0c;什么时候用modules 由于使用单一状态树&#xff0c;应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时&#xff0c;store 对象就有可能变得相当臃肿。 为了解决以上问题&#xff0c;Vuex 允许我们将 store 分割成模块&#xff08;module&#xff09…

NFT交易平台开发 创建NFT数字藏品平台

为什么需要 NFT 市场&#xff1f; NFT Marketplace 允许用户购买、出售、交易、查看或创建自己的 NFT&#xff0c;就像他们需要一个市场来购买物理或数字世界中的大多数产品一样。几乎每个人都可以进入 NFT 市场&#xff0c;但要做到这一点&#xff0c;用户必须满足以下要求&a…

第3关:节点状态检查、数据查看和更新

首先&#xff0c;需要启动服务器&#xff0c;并使用zkCli.sh连接服务器&#xff0c;进入客户端命令行界面&#xff08;如第一关所述&#xff09;。 节点状态包含以下信息&#xff1a; czxid: 节点创建时的时间戳。mzxid: 节点最新一次更新发生时的时间。ctime&#xff1a; 节…

[附源码]java毕业设计篮球装备商城系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…