当前位置: 首页 > news >正文

c语言-位操作符练习题

文章目录

  • 前言
  • 一、n&(n-1)的运用场景(n为整数)
  • 二、&1 和 >>的应用场景
  • 总结


前言

本篇文章介绍利用c语言的位操作符解决一些练习题,目的是掌握各个位操作符的使用和应用场景。
表1.1为c语言中的位操作符

操作符含义
&按位与
|按位或
^按位异或
~按位取反(包括符合位)
<<左移
>>右移
表1.1 位操作符表

注意:

  1. 位操作符除"~"为单目操作符外,其余均为二目操作符,即有两个操作数
  2. 参加位操作符的对象只能是整型或字符型数据。

一、n&(n-1)的运用场景(n为整数)

题目:求一个整数存储在内存中的二进制位中1的个数(补码中1的个数)

n&(n-1)的过程如下(假设n = 15):
在这里插入图片描述

图1.1 n&(n-1)过程图
不断通过n&(n-1),每一次得到的结果是消去最右边的1;
原理:不断地向左借位,然后利用&操作符消去。 代码实现如下:
int count_2scomplement_3(int num)
{int count = 0;while (num){count++;num = num & (num - 1);}return count;
}

题目:判断一个数是不是2的n次方

这到题依然可以利用n&(n-1)进行解答,如果一个数是2的n次方,则意味只有一个1。如果n&(n-1)的结果为0,那么这个值就是2的n次方。
代码实现如下:

int main()
{int num = 0;scanf("%d", &num);if (0 == (num & (num - 1)))printf("%d is 2^n\n", num);elseprintf("%d is not 2^n\n",num);return 0;
}

题目:两个int(32位)整数的m和n二进制表达式中,有多少个不同的位

这道题的思路是:m与n进行异或运算后,得到m和n的不同位,即1的个数就是不同位的个数,此时,这题又回到了统计1的个数,即第一题的解法。
代码实现如下:

int main()
{int m = 0;int n = 0;int ret = 0;scanf("%d %d", &m, &n);int a = (m ^ n);while(a){ret++;a = a&(a-1);}printf("%d", ret);return 0;
}

二、&1 和 >>的应用场景

利用&1和>>可以统计一个二进中1或者0的个数;
利用&1和>>也可以获得任意一个位的值。

题目:求一个整数存储在内存中的二进制位中1的个数(补码中1的个数)

利用&1和>>进行解题,代码实现如下:

int count_2scomplement_2(int num)
{int count = 0;int rightmovetimes = 0;for (rightmovetimes = 0; rightmovetimes < 32; rightmovetimes++){if ((num >> rightmovetimes) & 1){count++;}}return count;
}

num >> rightmovetimes) & 1 == 1,则统计1的个数;为0则统计0的个数。

获取一个整数二进制序列中所有的奇数位和偶数位,分别打印二进制序列
要求:从高位开始打印

这道题的思路依然是利用&1和>>,从高位开始
代码实现如下:

int main()
{int num = 0;scanf("%d", &num);int i = 0;//打印奇数位for (i = 30; i >= 0; i -=2 ){printf("%d", (num >> i) & 1);}printf("\n");//打印偶数位for (i = 31; i >= 1; i -= 2){printf("%d", (num >> i) & 1);}return 0;
}

总结

本篇文章叙述了n&(n-1)和&1、>>的应用场景。

相关文章:

c语言-位操作符练习题

文章目录 前言一、n&(n-1)的运用场景(n为整数)二、&1 和 >>的应用场景总结 前言 本篇文章介绍利用c语言的位操作符解决一些练习题&#xff0c;目的是掌握各个位操作符的使用和应用场景。 表1.1为c语言中的位操作符 操作符含义&按位与|按位或^按位异或~按位…...

园林机械部件自动化三维测量检测形位公差-CASAIM自动化三维检测工作站

随着园林机械的广泛应用&#xff0c;对其机械部件的精确测量需求也日益增加。传统的测量方法不仅效率低下&#xff0c;而且精度难以保证&#xff0c;因此&#xff0c;自动化三维测量技术成为了解决这一问题的有效途径。本文将重点介绍CASAIM自动化三维检测工作站在园林机械部件…...

o2o生活通全开源尊享版+多城市切换+企业付款+交友IM+平台快报

搭建教程 1.把 pigo2ov282.sql 文件里面的网址 test.souho.net 全部批量替换为你的自己的 2.使用 phpmyadmin 导入 pigo2ov282.sql 到你的数据库&#xff08;直接访问/phpmyadmin 即可&#xff09; 3.修改数据库文件/conf/db.php 里的数据库连接信息&#xff08;请勿使用记事本…...

UE4开发BIM程序 的 流程

某机构BIM设计研究中心主任马晓龙&#xff0c;他对编程颇有研究。今天他会用通俗易懂的语言来讲解基于游戏引擎UE4的BIM技术可视化应用。对于想要自己开发程序的设计师一定要读一下&#xff01; 1&#xff09;关于UE4——UE4是什么&#xff1f; 可以简单的理解为&#xff0c;一…...

【AI大语言模型】ChatGPT在地学、GIS、气象、农业、生态、环境等领域中的应用

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮&#xff0c;可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…...

【面试题】写一个睡眠函数

题目要求 请你编写一个异步函数&#xff0c;它接收一个正整数参数 millis &#xff0c;并休眠 millis 毫秒。要求此函数可以解析任何值。 示例 1&#xff1a; 输入&#xff1a;millis 100 输出&#xff1a;100 解释&#xff1a; 在 100ms 后此异步函数执行完时返回一个 Pro…...

4. 云原生之kubesphere基础服务搭建

文章目录 安装kubesphere插件服务暴露NodePort方式LoadBalancer方式安装 OpenELB部署eip资源配置网关启动网关创建路由测试网关路由ingress高级功能在服务中配置LoadBalancer 基础设施部署服务部署建议helm仓库添加helm仓库 运维相关部署gitlab部署nexus3部署harbor 研发相关 安…...

思福迪运维安全管理系统 任意文件读取漏洞

产品简介 思福迪运维安全管理系统是思福迪开发的一款运维安全管理堡垒机 漏洞概述 由于思福迪运维安全管理系统 GetCaCert路由存在任意文件读取漏洞&#xff0c;攻击者可通过该漏洞在服务器端读取任意文件敏感内容&#xff0c;可能导致攻击者后续获取到相关的服务器权限 资…...

OCR在审核应用落地

本文字数&#xff1a;6686字 预计阅读时间&#xff1a;35分钟 01 背景 1、业务背景 在传统视频审核场景中&#xff0c;审核人员需要对进审视频中的文字内容进行逐一审核&#xff0c;避免在文字上出现敏感词、违禁词或者广告等相关词汇。这种人工审核费时费力&#xff0c;并且由…...

借贷协议 Tonka Finance:铭文资产流动性的新破局者

“Tonka Finance 是铭文赛道中首个借贷协议&#xff0c;它正在为铭文资产赋予捕获流动性的能力&#xff0c;并为其构建全新的金融场景。” 在 2023 年的 1 月&#xff0c;比特币 Ordinals 协议被推出后&#xff0c;包括 BRC20&#xff0c;Ordinals 等在内的系列铭文资产在包括比…...

Python+Yolov5+Qt交通标志特征识别窗体界面相片视频摄像头

程序示例精选 PythonYolov5Qt交通标志特征识别窗体界面相片视频摄像头 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《PythonYolov5Qt交通标志特征识别窗体界面相片视频摄像头》编写代码&a…...

浅谈高并发以及三大利器:缓存、限流和降级

引言 高并发背景 互联网行业迅速发展&#xff0c;用户量剧增&#xff0c;系统面临巨大的并发请求压力。 软件系统有三个追求&#xff1a;高性能、高并发、高可用&#xff0c;俗称三高。三者既有区别也有联系&#xff0c;门门道道很多&#xff0c;全面讨论需要三天三夜&#…...

深入ArkUI:深入实战组件text和text input

文章目录 Text组件介绍Text组件的属性方法Text:文本显示组件4.3TextInput组件实战案例:图片宽度控制页面本文总结要点回顾在今天的课程中,我们将深入学习ArkUI提供的基础组件,着重探讨text和text input两个组件。 Text组件介绍 Text组件是一个用于显示文本的组件,其主要作…...

WPF 基础(Binding 二)

续接上文&#xff0c;本章继续讲解WPF Binding相关知识&#xff0c;主要内容是绑定的模式和绑定源&#xff08;Source&#xff09; 5绑定模式 在使用Binding类的时候有4中绑定模式可以选择 BindingMode TwoWay导致对源属性或目标属性的更改可自动更新对方。此绑定类型适用于…...

限制el-upload组件的上传文件大小

限制el-upload组件的上传文件大小 <el-upload :before-upload"handleBeforeUpload"><!-- 其他组件内容 --> </el-upload>Vue实例中定义handleBeforeUpload方法来进行文件大小的验证。你可以使用file.size属性来获取文件的大小&#xff0c;并与你期…...

什么是爬虫,为什么爬虫会导致服务器负载跑满

在我们日常使用服务器的过程中&#xff0c;经常会有遇到各种各样的问题。今天就有遇到用户来跟德迅云安全反馈自己服务器负载跑满&#xff0c;给用户详细排查后也未发现异常&#xff0c;抓包查看也没有明显攻击特征&#xff0c;后续查看发现是被爬虫爬了&#xff0c;调整处理好…...

线上隐私保护的未来:分布式身份DID的潜力

在日益数字化的世界中&#xff0c;人们的生活越来越多地依赖于互联网&#xff0c;数字身份也因而变得越来越重要。根据法律规定&#xff0c;互联网应用需要确认用户的真实身份才能提供各种服务&#xff0c;而用户则希望在进行身份认证的同时能够尽量保护他们的个人隐私&#xf…...

服务器被入侵后如何查询连接IP以及防护措施

目前越来越多的服务器被入侵&#xff0c;以及攻击事件频频的发生&#xff0c;像数据被窃取&#xff0c;数据库被篡改&#xff0c;网站被强制跳转到恶意网站上&#xff0c;网站在百度的快照被劫持等等的攻击症状层出不穷&#xff0c;在这些问题中&#xff0c;如何有效、准确地追…...

【开源】基于Vue+SpringBoot的公司货物订单管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 客户管理模块2.2 商品维护模块2.3 供应商管理模块2.4 订单管理模块 三、系统展示四、核心代码4.1 查询供应商信息4.2 新增商品信息4.3 查询客户信息4.4 新增订单信息4.5 添加跟进子订单 五、免责说明 一、摘要 1.1 项目…...

2023-12-29 服务器开发-Centos部署LNMP环境

摘要: 2023-12-29 服务器开发-Centos部署LNMP环境 centos7.2搭建LNMP具体步骤 1.配置防火墙 CentOS 7.0以上的系统默认使用的是firewall作为防火墙&#xff0c; 关闭firewall&#xff1a; systemctl stop firewalld.service #停止firewall systemctl disable fire…...

书成紫微动,律定凤凰驯:从无心创作到天命显化的海棠山铁哥之路

书成紫微动&#xff0c;律定凤凰驯。 ——南北朝庾信一、千古谶语&#xff0c;千年未解诗句天道逻辑千年误读书成紫微动先著书立道&#xff0c;撼动文脉附会玄学&#xff0c;强行造神律定凤凰驯再定规立序&#xff0c;祥瑞归宁脑会剧情&#xff0c;虚妄狂欢 无人真正落地&#…...

开源智能告警聚合路由引擎:从原理到实战部署

1. 项目概述&#xff1a;一个开源的智能告警聚合与路由引擎如果你和我一样&#xff0c;长期负责线上系统的稳定性&#xff0c;那你一定对“告警风暴”和“告警疲劳”这两个词深恶痛绝。想象一下这样的场景&#xff1a;凌晨三点&#xff0c;一个核心服务的某个实例因为网络抖动重…...

技术团队的“信息透明”策略:报喜也报忧,反而更受信任

在软件测试领域&#xff0c;我们每天都在与“不确定性”打交道。一个隐藏的边界值、一次偶发的并发冲突、一个在特定机型上才能复现的诡异Bug&#xff0c;都足以让看似稳固的系统瞬间变得脆弱。然而&#xff0c;比起代码中的不确定性&#xff0c;更让测试团队感到无力的&#x…...

Linux内核构建自动化:jpoindexter/kern工具实战指南

1. 项目概述&#xff1a;一个被低估的Linux内核构建工具 如果你和我一样&#xff0c;长期在嵌入式开发、内核模块调试或者需要频繁定制Linux内核的岗位上工作&#xff0c;那么你一定对内核的配置、编译、打包这一套繁琐的流程感到又爱又恨。爱的是&#xff0c;这是深入理解操作…...

spoof 与网络安全:如何利用 MAC 地址伪造增强企业安全防护

spoof 与网络安全&#xff1a;如何利用 MAC 地址伪造增强企业安全防护 【免费下载链接】spoof Easily spoof your MAC address in macOS, Windows, & Linux! 项目地址: https://gitcode.com/gh_mirrors/sp/spoof 在当今数字化时代&#xff0c;网络安全已成为企业运营…...

12 - AI Native“基因测序法”:你的产品是“数字生命”还是“行尸走肉”?

本专题系列文章共 28 篇 01 - 眩晕时代的定海神针:大模型落地的“第一性原理”与算力丰裕悖论 02 - 95%的AI投资打了水漂:五大错配如何扼杀你的“第二增长曲线”...

猫眼启发的亚太赫兹超表面成像系统设计与应用

1. 猫眼启发的亚太赫兹超表面成像系统概述在电磁波成像技术领域&#xff0c;传统系统往往面临视场匹配困难、系统冗余度高以及实时性不足等挑战。受猫眼结构中反光膜&#xff08;tapetum lucidum&#xff09;的生物学启发&#xff0c;我们开发了一种创新的主动-被动复合孔径共享…...

AgentGPT 二次开发指南:API 调用、功能扩展与场景定制

AgentGPT 二次开发指南:API 调用、功能扩展与场景定制 1. 引入与连接:为什么你需要二次开发 AgentGPT? 1.1 开场:从一个真实需求说起 2023年3月AgentGPT横空出世时,很多人第一次感受到了自主智能体的魔力:输入一个「帮我做一份奶茶店的创业商业计划书,包含市场调研、成…...

【仅限首批内测用户验证】:Midjourney v8“隐性美学协议”曝光——92%设计师尚未察觉的4类负向提示陷阱

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney v8“隐性美学协议”的本质解构 Midjourney v8 并未公开发布传统意义上的“美学参数文档”&#xff0c;其核心创新在于将图像生成的审美判断内化为一套不可见但可触发的上下文响应机制——即…...

CTF新手必看:用010 Editor修复PNG图片CRC错误,轻松拿下BUUCTF那道‘一叶障目’题

CTF新手实战&#xff1a;用010 Editor修复PNG图片CRC校验错误 拿到一张打不开的PNG图片&#xff0c;显示"CRC校验失败"&#xff1f;别急着放弃&#xff0c;这可能是CTF比赛中故意设置的陷阱。作为MISC方向的经典题型&#xff0c;修改PNG文件头参数是常见的出题套路。…...