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

【C语言】16 位的值,通过几种不同的方式将其拆分为高 8 位和低 8 位

当我们想要将一个16位的Register_Value拆分成高8位和低8位并存储到Send_Data_Uart5数组中时有几种常见的方法可以实现。让我们逐一优化和详细分析每种方法方法 1: 使用位移和位掩码常用方法代码语言cAI代码解释Send_Data_Uart5[data_index] Register_Value 8; // 提取高8位 Send_Data_Uart5[data_index] Register_Value 0xFF; // 提取低8位这种方法利用位移操作和按位与操作分别提取出Register_Value的高8位和低8位并将它们存储到Send_Data_Uart5数组中。这是最直观和常见的方式适用于大多数情况。方法1详解详细解释如何将一个 16 位的 Register_Value 拆分为高 8 位和低 8 位并存储在 Send_Data_Uart5 数组中数据类型与位操作uint16_t Register_ValueRegister_Value 是一个 16 位的无符号整数。在内存中它通常占用两个字节16位取值范围是从 0 到 65535即 2^16 - 1。拆分 16 位整数要将 Register_Value 拆分为高 8 位和低 8 位我们使用位操作。高 8 位高 8 位是 Register_Value 的最高位字节。我们通过右移运算符将 Register_Value 向右移动 8 位这样原来的高 8 位就移到了最低 8 位的位置。这个操作得到的结果就是 Register_Value 的高 8 位。代码语言cAI代码解释Send_Data_Uart5[data_index] Register_Value 8;低 8 位低 8 位是 Register_Value 的最低位字节。我们使用位与运算符和掩码0xFF二进制 11111111来保留 Register_Value 的最低 8 位其余高位清零。代码语言cAI代码解释Send_Data_Uart5[data_index] Register_Value 0xFF;示例假设 Register_Value 的十六进制值为0x1234在十进制中是 4660高 8 位是0x12十进制 18。低 8 位是0x34十进制 52。执行上述代码后Send_Data_Uart5[data_index]将存储0x12然后data_index自增。Send_Data_Uart5[data_index]将存储0x34然后data_index再次自增。最终Send_Data_Uart5 数组中将包含0x12和0x34分别表示 Register_Value 的高 8 位和低 8 位。这种方法简单直观适合大多数情况下将 16 位整数拆分为字节并存储到数组中。方法 2: 使用指针和强制类型转换不推荐代码语言cAI代码解释uint8_t *pValue (uint8_t *)Register_Value; Send_Data_Uart5[data_index] *pValue; // 提取高8位 Send_Data_Uart5[data_index] *pValue; // 提取低8位这种方法通过将Register_Value的地址强制转换为uint8_t*类型的指针逐个访问其字节。然而它依赖于内存对齐和硬件平台的特性不推荐在跨平台或移植性要求高的情况下使用。方法 3: 使用联合体union代码语言cAI代码解释typedef union { uint16_t value; struct { uint8_t low_byte; uint8_t high_byte; } bytes; } RegisterUnion; RegisterUnion ru { .value Register_Value }; Send_Data_Uart5[data_index] ru.bytes.high_byte; // 提取高8位 Send_Data_Uart5[data_index] ru.bytes.low_byte; // 提取低8位这种方法定义了一个联合体RegisterUnion通过共享内存空间直接访问Register_Value的高8位和低8位。这种做法更高级通常用于复杂数据结构的处理。方法 4: 使用内联函数或宏为了代码重用代码语言cAI代码解释// 宏定义 #define EXTRACT_HIGH_BYTE(x) ((uint8_t)((x) 8)) #define EXTRACT_LOW_BYTE(x) ((uint8_t)((x) 0xFF)) // 使用宏 Send_Data_Uart5[data_index] EXTRACT_HIGH_BYTE(Register_Value); // 提取高8位 Send_Data_Uart5[data_index] EXTRACT_LOW_BYTE(Register_Value); // 提取低8位 // 或者内联函数如果编译器支持 static inline uint8_t extract_high_byte(uint16_t value) { return (uint8_t)(value 8); } static inline uint8_t extract_low_byte(uint16_t value) { return (uint8_t)(value 0xFF); } // 使用内联函数 Send_Data_Uart5[data_index] extract_high_byte(Register_Value); // 提取高8位 Send_Data_Uart5[data_index] extract_low_byte(Register_Value); // 提取低8位这种方法定义了宏或内联函数来封装提取高8位和低8位的操作以提高代码的重用性和可读性。它们在需要频繁进行这类操作的情况下特别有用。方法 5: 使用整数除法和取模运算的方式易于理解代码语言cAI代码解释Send_Data_Uart5[data_index] Register_Value / 256; // 提取高8位 Send_Data_Uart5[data_index] Register_Value % 256; // 提取低8位这种方法首先通过整数除法Register_Value / 256提取出Register_Value的高8位并将结果存储到Send_Data_Uart5数组中。然后通过取模运算Register_Value % 256提取出Register_Value的低8位并将结果存储到Send_Data_Uart5数组中。

相关文章:

【C语言】16 位的值,通过几种不同的方式将其拆分为高 8 位和低 8 位

当我们想要将一个16位的 Register_Value 拆分成高8位和低8位,并存储到 Send_Data_Uart5 数组中时,有几种常见的方法可以实现。让我们逐一优化和详细分析每种方法:方法 1: 使用位移和位掩码(常用方法)代码语言&#xff…...

C语言程序设计核心详解 结构体与链表概要详解

1.结构体类型代码语言:cAI代码解释struct 结构体类型名 {成员1的定义;成员2的定义;.........成员n的定义; }结构体名(可以省略);1.1 构造与定义结构体类型构造结构体一共有三种方法方法一:代码语言:cAI代码解释struct student {int sn;int ag…...

C语言程序设计核心详解 函数和预编译命令

1.函数的定义和使用1.1 函数定义C语言程序的框架有两种:一个main()单框架一个main()多个子函数注:一个源程序文件可由一个或多个函数组成一个C语言程序可以由一个或多个源程序文件组成C程序执行总是从main()开始,结束于main()结束&#xff1b…...

终极视频加速神器:如何用Video Speed Controller提升300%学习效率

终极视频加速神器:如何用Video Speed Controller提升300%学习效率 【免费下载链接】videospeed HTML5 video speed controller (for Google Chrome) 项目地址: https://gitcode.com/gh_mirrors/vi/videospeed 你是否曾因视频播放速度太慢而浪费宝贵时间&…...

C语言程序设计核心详解 第十章:位运算和c语言文件操作详解_文件操作函数

位运算和c语言文件操作详解1. 位运算位运算的操作对象只能是整型或字符型数据C语言提供6种位运算符:& 按位与| 或^ 异或~ 取反<< 左移>> 右移复合赋值运算符:&,| ,^,<<&#xff0c;>>1.1 按位与运算代码语言&#xff1a;cAI代码解释1&11 全…...

2026年GEO源头厂家选型指南:深度解析技术壁垒与商业价值,助你选对不踩坑

在AI大模型重塑信息检索与商业流量的当下&#xff0c;GEO&#xff08;生成式引擎优化&#xff09;已成为企业获取精准曝光、实现高效转化的核心战场。然而&#xff0c;面对市场上层出不穷的GEO服务商&#xff0c;决策者往往陷入选择困境&#xff1a;是选择短期见效的“代运营”…...

大规模深度学习性能调优:自顶向下的五件套

GPU 利用率上不去&#xff1f;显存莫名 OOM&#xff1f;分布式训练卡死不动&#xff1f;这些问题不能靠"再加一张卡"解决&#xff0c;必须靠 Profiling 把瓶颈找出来。性能调优的正确顺序是自顶向下&#xff1a;先在框架层看哪个算子慢&#xff0c;再下到系统层看 CP…...

使用 Elasticsearch 与 Kibana 中的 PromQL 调查 Kubernetes 基础设施问题

作者&#xff1a;来自 Elastic Miguel Snchez 本文将逐步介绍如何使用 PromQL 在 Elastic Observability 中对 Kubernetes 集群范围内的 CPU 使用情况进行调查&#xff0c;从集群到命名空间再到出现问题的 Pod。 Elasticsearch 现在已经原生支持 PromQL&#xff0c;并且你可以通…...

GRT 深度解剖:单芯片雷达基础模型的全栈技术图谱

文献&#xff1a;Huang T., Prabhakara A., Chen C., et al. "Towards Foundational Models for Single-Chip Radar." ICCV, 2025. 项目主页&#xff1a;https://wiselabcmu.github.io/grt/ 一、论文全景架构&#xff1a;从问题到答案的完整地图 我们先不急着钻细节…...

瓷砖规格有哪些?瓷砖用量如何计算?

瓷砖规格有哪些?瓷砖用量如何计算? 目前建材市场上出现的瓷砖规格有许多种,每一种瓷砖规格所装饰出来的效果都各有千秋,如果想节省瓷砖和降低造价,那么在购买瓷砖前计算要铺贴的使用量就十分必要。了解瓷砖规格以及瓷砖用量,对于购买瓷砖的消费者而言,一定会有所帮助的…...

Android Studio中文界面完整指南:3分钟实现全中文开发环境

Android Studio中文界面完整指南&#xff1a;3分钟实现全中文开发环境 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack Android St…...

创优必看!鲁班奖工程的八项基本要求

创优必看!鲁班奖工程的八项基本要求 作为建筑工程行业的最高级别奖项,鲁班奖的评选工作严格贯彻执行国家有关基本建设的法律、法规和方针政策,以及国家、行业现行的技术标准、施工规范和技术规程。那么,什么样的工程才能荣获鲁班奖呢? 本文根据《鲁班奖评选工作细则》总…...

全面掌握Wand-Enhancer:零成本解锁WeMod Pro高级功能的实用攻略

全面掌握Wand-Enhancer&#xff1a;零成本解锁WeMod Pro高级功能的实用攻略 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 想免费体验WeMod Pro的所有高…...

Adobe-GenP 3.0:AutoIt实现的Adobe CC二进制补丁机制深度分析

Adobe-GenP 3.0&#xff1a;AutoIt实现的Adobe CC二进制补丁机制深度分析 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP Adobe Creative Cloud系列软件作为创意行业…...

终极SOCD清理工具:Hitboxer让你的游戏操作精准如职业选手

终极SOCD清理工具&#xff1a;Hitboxer让你的游戏操作精准如职业选手 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 你是否曾在激烈的游戏对战中&#xff0c;明明同时按下了左右方向键&#xff0c;角色却做出奇…...

Windows Cleaner:专业级Windows系统优化终极指南

Windows Cleaner&#xff1a;专业级Windows系统优化终极指南 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner Windows Cleaner是一款专为Windows系统设计的开源系统…...

BetterGI:原神自动化助手终极指南 - 告别重复劳动,智能解放双手

BetterGI&#xff1a;原神自动化助手终极指南 - 告别重复劳动&#xff0c;智能解放双手 【免费下载链接】better-genshin-impact &#x1f4e6;BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一…...

OpenClaw插件实战:为Telegram审批消息添加一键操作按钮

1. 项目概述&#xff1a;为OpenClaw的Telegram频道添加一键审批按钮如果你正在使用OpenClaw&#xff0c;并且像我一样&#xff0c;把Telegram作为主要的交互和通知渠道&#xff0c;那你肯定对下面这个场景不陌生&#xff1a;AI助手在执行某个需要授权的命令&#xff08;比如exe…...

Blender 3MF插件终极指南:如何实现3D打印工作流无缝对接

Blender 3MF插件终极指南&#xff1a;如何实现3D打印工作流无缝对接 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat Blender 3MF插件是连接3D建模与3D打印制造的关键桥梁…...

从安装到实战:用Python+Neo4j Driver构建你的第一个社交网络图谱(含完整代码)

从零构建社交网络图谱&#xff1a;Python与Neo4j全流程实战指南 社交网络分析正在重塑我们对复杂关系的理解。想象一下&#xff0c;当我们需要分析Twitter上的信息传播路径、LinkedIn的职业关系网或是电商平台的用户推荐系统时&#xff0c;传统的关系型数据库往往显得力不从心。…...

Ubuntu 18.04上Qt程序报‘xcb’插件错误?别急着重装,试试这个ldd排查法

Ubuntu 18.04 Qt程序xcb插件错误排查指南&#xff1a;从日志分析到依赖修复 当你满怀期待地在Ubuntu 18.04上启动精心开发的Qt应用程序时&#xff0c;屏幕上突然跳出"Could not load the Qt platform plugin xcb"的错误提示&#xff0c;这种挫败感开发者都深有体会。…...

通过API Key管理与审计日志功能加强企业级应用的安全管控

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过API Key管理与审计日志功能加强企业级应用的安全管控 应用场景类&#xff0c;企业级应用在集成大模型能力时&#xff0c;需严格…...

在Node.js服务中集成Taotoken实现稳定的大模型调用方案

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在Node.js服务中集成Taotoken实现稳定的大模型调用方案 应用场景类&#xff0c;针对需要构建AI功能的后端开发者&#xff0c;阐述如…...

LinkSwift:九大网盘直链下载,告别限速烦恼

LinkSwift&#xff1a;九大网盘直链下载&#xff0c;告别限速烦恼 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…...

QueryExcel终极指南:5分钟批量查询上百个Excel文件的完整解决方案

QueryExcel终极指南&#xff1a;5分钟批量查询上百个Excel文件的完整解决方案 【免费下载链接】QueryExcel 多Excel文件内容查询工具。 项目地址: https://gitcode.com/gh_mirrors/qu/QueryExcel 你是否曾在海量Excel文件中迷失方向&#xff1f;当数据分散在数十个甚至上…...

从卡顿到流畅:WaveTools如何让你的《鸣潮》体验脱胎换骨

从卡顿到流畅&#xff1a;WaveTools如何让你的《鸣潮》体验脱胎换骨 【免费下载链接】WaveTools &#x1f9f0;鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 你是否曾经在《鸣潮》的激烈战斗中因为突然的卡顿而错失良机&#xff1f;是否觉得60帧的…...

2025届毕业生推荐的六大降AI率神器解析与推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 对于有那种需求去规避人工智能内容检测的用户来讲&#xff0c;在这儿推荐使用专业的降AI率网…...

深入剖析`ReentrantReadWriteLock`源码——虚拟线程时代机遇、挑战与演进

引言&#xff1a;并发范式的革命性转变 Java 21 正式引入了虚拟线程&#xff08;Virtual Threads&#xff09;&#xff0c;这标志着 Java 并发编程进入了一个全新的时代。Project Loom 的目标是让编写、维护和观测高吞吐量的并发应用程序变得如同编写顺序代码一样简单。虚拟线程…...

WPS-Zotero插件终极指南:5步实现科研写作效率翻倍的完整教程

WPS-Zotero插件终极指南&#xff1a;5步实现科研写作效率翻倍的完整教程 【免费下载链接】WPS-Zotero An add-on for WPS Writer to integrate with Zotero. 项目地址: https://gitcode.com/gh_mirrors/wp/WPS-Zotero 还在为学术论文的文献管理而烦恼吗&#xff1f;每次…...

QMC音频转换工具终极指南:快速免费解锁加密音乐文件

QMC音频转换工具终极指南&#xff1a;快速免费解锁加密音乐文件 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 你是否曾遇到过下载的音乐文件无法在普通播放器中播放的困扰…...