嵌入式学习笔记(63)位操作实战

news2024/11/15 21:41:54

(1)给定一个整型数a,设置a的bit3,保证其他位不变。

a |= (1<<3)

(2)给定一个整形数a,设置a的bit3~bit7,保持其他位不变

a |= (0x1f<<3)

(3)给定一个整型数a,清除a的bit15,保证其他位不变。

a &= ~(1<<15)

(4)给定一个整形数a,清除a的bit15~bit23,保持其他位不变。

a &= ~(0x1ff<<15)

(5)给定一个整形数a,取出a的bit3~bit8。

a &= (0x3f<<3)

a >>= 3

(6)给一个寄存器的bit7~bit17赋值937

a &= ~(0x7ff<<7)

a |= (937<<7)

(7)给一个寄存器的bit7~bit17中的值加17

b = ((a & (0x7ff<<7))>>7 + 17)<<7

a &= ~(0x7ff<<7)

a |= b

(8)给一个寄存器的bit7~bit17赋值937,同时给bit21~bit25赋值17.

a &= ~((0x7ff<<7) | (0x1f<<21))

a |= ((937<<7) | (17<<21))

(9)用宏定义来完成位运算

截取变量的部分连续位:

#define GETBITS(x, n, m) ((x & (~(~(0U)<<(m-n+1)))<<(n-1)) >> (n-1))

分析:这个题目相当于我们(5)中做的事情,只不过要用宏来实现。

这个题目相当于是要把x的bit(n-1)到bit(m-1)取出来

复杂宏怎么分析:

((x & ~(~(0U)<<(m-n+1))<<(n-1)) >> (n-1))

第一步,先分清楚这个复杂宏分为几部分:2部分

(x & ~(~(0U)<<(m-n+1))<<(n-1)) >> (n-1)

分析为什么要>>(n-1),相当于是我们(5)中的第二步

第二步,继续解析剩下的:又分为2部分

x & ~(~(0U)<<(m-n+1))<<(n-1)

分析为什么要&,相当于我们(5)中的第一步

第三步,继续分析剩下的:

~  (~(0U)<<(m-n+1)) << (n-1)

这个分析时要搞清楚第2坨到底应该先左边取反再右边<<还是先右边<<再左边取反。

解法:第一,查C语言优先级表;第二,自己实际写个代码测试。

说明这个式子应该是 ~(~(0U)<<(m-n+1)) << (n-1) ,这就又分为2部分了

  嵌入式物联网的学习之路非常漫长,不少人因为学习路线不对或者学习内容不够专业而错失高薪offer。不过别担心,我为大家整理了一份150多G的学习资源,基本上涵盖了嵌入式物联网学习的所有内容。在评论区私信“嵌入式”0元领取学习资源,让你的学习之路更加顺畅!记得点赞、关注、收藏、转发哦!

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

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

相关文章

鸿运主动安全监控云平台任意文件下载漏洞复现 [附POC]

文章目录 鸿运主动安全监控云平台任意文件下载漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 鸿运主动安全监控云平台任意文件下载漏洞复现 [附POC] 0x01 前言 免责声明&#xff1a;请勿利用文章内的相关技术…

SpringBoot 源码分析(三) 监听器分析以及属性文件加载分析

前言 在创建SpringBoot项目的时候会在对应的application.properties或者application.yml文件中添加对应的属性信息&#xff0c;这些属性文件是什么时候被加载的&#xff1f;如果要实现自定义的属性文件怎么来实现&#xff1f;在讲属性加载之前先讲下监听器分析。 一、监听器分…

Apifox:满足你对 Api 的所有幻想

一、Api 管理的难点在哪&#xff1f; 相信无论是前端&#xff0c;还是后端的测试和开发人员&#xff0c;都遇到过这样的困难。不同工具之间数据一致性非常困难、低效。多个系统之间数据不一致&#xff0c;导致协作低效、频繁出问题&#xff0c;开发测试人员痛苦不堪。 开发人…

面向中小型企业的高效企业备份解决方案

​如今&#xff0c;数据保护并不是一个新概念。无论是在个人、家庭、非营利组织还是企业环境中&#xff0c;我们都不想丢失数据&#xff0c;尤其是对于企业来说。无论您的公司规模有多小&#xff0c;与个人使用环境相比&#xff0c;它都会拥有更多的设备、更大的数据量和更低的…

css 两栏布局的实现

目录 前言 1. 浮动布局 用法 代码示例 理解 2. Flex布局 用法 代码示例 理解 3. Grid布局 用法 代码示例 理解 高质量的设计 前言 两栏布局是一种常见的网页设计模式&#xff0c;它将页面分为两个主要区域&#xff1a;主内容区域和侧边栏。这种布局方式不仅能够提…

Java精品项目源码第61期汽车零件销售商城系统(代号V063)

Java精品项目源码第61期汽车零件销售商城系统(代号V063) 大家好&#xff0c;小辰今天给大家介绍一个汽车零件销售商城系统&#xff0c;演示视频公众号&#xff08;小辰哥的Java&#xff09;对号查询观看即可 文章目录 Java精品项目源码第61期汽车零件销售商城系统(代号V063)难…

资料分析错题

答案 ca 间隔增长率 DD

《动手学深度学习 Pytorch版》 10.4 Bahdanau注意力

10.4.1 模型 Bahdanau 等人提出了一个没有严格单向对齐限制的可微注意力模型。在预测词元时&#xff0c;如果不是所有输入词元都相关&#xff0c;模型将仅对齐&#xff08;或参与&#xff09;输入序列中与当前预测相关的部分。这是通过将上下文变量视为注意力集中的输出来实现…

学习嵌入式开发是不是需要很高的天赋智商能力?

今日话题&#xff0c;学习嵌入式开发是不是需要很高的天赋智商能力&#xff1f;我认为提出此疑问的人可能缺乏自信&#xff0c;需要培养自信心。学习嵌入式开发并不要求非常高的智商&#xff0c;成千上万的工程师已经从事这个行业&#xff0c;他们中的大多数都是非常普通的人。…

Hadoop3.0大数据处理学习3(MapReduce原理分析、日志归集、序列化机制、Yarn资源调度器)

MapReduce原理分析 什么是MapReduce 前言&#xff1a;如果想知道一堆牌中有多少张红桃&#xff0c;直接的方式是一张张的检查&#xff0c;并数出有多少张红桃。 而MapReduce的方法是&#xff0c;给所有的节点分配这堆牌&#xff0c;让每个节点计算自己手中有几张是红桃&#…

SpringBoot 源码分析(一) 启动过程分析

SpringBoot源码核心内容 SpringBoot的源码主要核心有以下几块; 1、是run()方法 &#xff0c;做一些准备工作 2、是自动装配原理 3、配置文件加载原理 4、tomcat内嵌原理 一、springboot.run()方法分析 在run方法中主要做的事情如下&#xff1a; SpringBootApplication public c…

局域网内无法连接时间源?使用Chrony服务搭建时间源

1.安装chrony yum install -y chrony2.启动和设置配置文件 systemctl start chronyd3.设置为系统自动启动 systemctl enable chronyd以上服务器都需要安装 4.服务器192.168.1.63配置&#xff1a; 打开配置文件 /etc/chrony.conf 配置 allow 192.168.0.0/24 systemct…

7-1、S曲线加减速原理【51单片机控制步进电机-TB6600系列】

摘要&#xff1a;本节介绍步进电机S曲线相关内容&#xff0c;总共分四个小节讨论步进电机S曲线相关内容   根据上节内容&#xff0c;步进电机每一段的速度可以任意设置&#xff0c;但是每一段的速度都会跳变&#xff0c;当这个跳变值比较大的时候&#xff0c;电机会发生明显的…

PHP 危险函数2-代码执行语句

代码执行语句 eval() 不是函数&#xff0c;不能被动态调用&#xff0c;并且需要以 ;结束 直接输出&#xff0c;不执行 <?php$code"phpinfo();";echo $code;?>eval() 语句执行 <?php$code"phpinfo();";eval($code); // eval 不是函数&am…

高压功率放大器在压电换能器中的作用

压电换能器是一种重要的电子设备&#xff0c;主要用于将机械振动转化为电信号或将电信号转化为机械振动。高压功率放大器作为其重要组成部分之一&#xff0c;主要用于提供高电压、高功率的信号驱动压电换能器进行工作。下面安泰电子将详细介绍高压功率放大器在压电换能器中的作…

“简单易学:视频批量添加文字水印的技巧大公开“

如果你是一个视频制作爱好者&#xff0c;那么今天我要分享的技巧将对你非常有帮助。通过使用“固乔剪辑助手”软件&#xff0c;你可以轻松地批量添加文字水印到你的视频中。下面&#xff0c;让我们一起来揭秘这个技巧吧&#xff01; 首先&#xff0c;你需要下载并安装“固乔剪辑…

父子项目打包发布至私仓库

父子项目打包发布至私仓库 1、方法一 在不需要发布至私仓的模块上添加如下代码&#xff1a; <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-deploy-plugin</artifactId><configuration><skip>true</s…

ICLR 2023丨3DSQA:3D 场景中的情景问答

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 论文链接&#xff1a;https://arxiv.org/pdf/2210.07474.pdf 主页链接&#xff1a;http://sqa3d.github.io 图 1&#xff1a;3D 场景中情景问答 (SQA3D) 的任务图示。给定场景上下文 S&#xff08;例如&#…

光致发光荧光量子检测的作用

光致发光荧光量子检测是一种测试技术&#xff0c;可以用来测量荧光材料的荧光光谱、荧光量子效率和发光寿命等参数&#xff0c;具有高灵敏度、高分辨率和自动化程度高等优点。 光致发光荧光量子检测的应用范围广泛&#xff0c;可以应用于材料科学、生物科学、医学、光学器件、能…

【C】想动态分配内存?动态内存管理了解一下

目录 一、为什么存在动态内存分配 二、动态内存函数的介绍 1.malloc和free 2.calloc 3.realloc 三、常见的动态内存错误 1 对NULL指针的解引用操作 2 .对动态开辟空间的越界访问 3.对非动态开辟内存使用free释放 4.使用free释放一块动态开辟内存的一部分 5.对同一块动态…