高字节,低字节,大端序,小端序

本文内容中的疑问由智谱清言解答 

short value = 0x1234;
// 右移8位然后与0xFF进行位与操作,得到高字节
unsigned char high_byte = (value >> 8) & 0xFF; 
// 与0xFF进行位与操作,得到低字节
unsigned char low_byte = value & 0xFF; 

上述代码中使用的位操作并不依赖于CPU的字节序

位操作>>(右移)和&(位与)是在逻辑层面上进行的,与数据的实际存储顺序无关。

无论在大端还是小端系统中,value作为short类型的变量,其内部的位序列是相同的。

这意味着0x1234在内存中无论是0x12 0x34(大端)还是0x34 0x12(小端),位操作的结果都是一样的。

  • 右移8位 (value >> 8) 会将高8位移到低8位的位置,无论原始数据的字节序如何
  • 位与操作 (& 0xFF) 会将结果限制在低8位内,同样不受字节序的影响

--------

然而,如果你直接读取内存中的字节,而不是使用位操作,那么字节序就会产生影响。

例如,如果你尝试使用指针直接访问内存中的字节,那么在大端和小端系统中的结果会有所不同:

short value = 0x1234;
unsigned char *ptr = (unsigned char *)&value;

 在大端系统中,ptr[0]会是高字节,而ptr[1]会是低字节。 

在小端系统中,ptr[0]会是低字节,而ptr[1]会是高字节。

--------

高位字节,低位字节实际是一种逻辑层面的概念。它们与数据的实际存储方式(即字节序)是分离的。这些术语通常用于描述一个多字节值中各个字节的位置

在逻辑层面:

  • 高位字节(High Byte)通常指的是数值的左边部分。例如,在16位的数值0x1234中,0x12是高位字节。
  • 低位字节(Low Byte)通常指的是数值的右边部分。在同样的16位数值0x1234中,0x34是低位字节。

无论数据在大端(big-endian)还是小端(little-endian)系统中的存储顺序如何,高位字节和低位字节的逻辑概念是固定的:

  • 大端序中,高位字节存储在低地址,低位字节存储在高地址。例如,数值0x1234存储为0x12 0x34
  • 小端序中,低位字节存储在低地址,高位字节存储在高地址。数值0x1234存储为0x34 0x12

当我们使用位操作提取高位字节和低位字节时,这些操作是基于数值的逻辑表示,而不是基于其在内存中的实际存储顺序

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

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

相关文章

软件测试第二篇软件测试技术

第五章单元测试和集成测试的技术 单元静态测试主要由开发人员完成。 标准:规定什么能做,什么不能做。 规范:建议你要怎么做。 5.1.2 代码评审 代码评审是一种发现代码缺陷的另一种测试方法。 代码审查的最佳实践: 创建代码审…

w035基于web的学科竞赛管理

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文件&#xff0…

导航系统非完整性约束汽车运动公约

Back to FDISYSTEMS Knowledge Base 惯性&导航传感器 导航系统&运动约束 数学基础 & 约定 参考坐标系载体 & 传感器坐标系方向/旋转表示非线性卡尔曼滤波器SPKF汽车运动公约船舶运动公约 惯性传感器安装 惯性传感器运行 技术洞察 Knowledge Base /数学基础…

Centos8 安装 JDK / Python / MySQL / Redis / Nginx

安装 JDK 华为镜像 JDK 下载地址:https://repo.huaweicloud.com:8443/artifactory/java-local/jdk/ 这里安装 JDK8 为例: # 这里直接通过 wget 下载 wget https://repo.huaweicloud.com:8443/artifactory/java-local/jdk/8u202-b08/jdk-8u202-linux-x…

【Qt-ROS开发】使用 Qt Creator 构建和编译含 ROS 库的 Qt 项目

【Qt-ROS】使用 Qt Creator 构建和编译含 ROS 库的项目 网上大多数办法是在 Qt creator中安装 ros_qtc_plugin 插件,项目以 ROS1 工作空间的形式构建,还是使用 catkin 来构建整个项目。但是这种方式局限很大,导入 Qt 的组件反而变得很麻烦&a…

【RabbitMQ】07-业务幂等处理

1. 方式一 序列化设置唯一Id。 Beanpublic MessageConverter messageConverter() {Jackson2JsonMessageConverter jjmc new Jackson2JsonMessageConverter();jjmc.setCreateMessageIds(true);return jjmc;}RabbitListener(bindings QueueBinding(value Queue(name "d…

SparseDrive 论文学习

论文链接:https://arxiv.org/pdf/2405.19620 代码链接:https://github.com/swc-17/SparseDrive 解决了什么问题? 传统模块化的自动驾驶系统可以被解耦为不同的独立模块,如感知、预测和规划,这种范式会面临信息丢失和…

如何提高自动驾驶中惯性和卫星组合导航pbox的精度?

Mems纯惯导里程推算精度做到千分之一,两分钟航向精度保持0.001弧度,是如何做到的? 简单的来说,导航系统的误差来源于这三方面:1.传感器误差 2.时间和迭代频率 3.算法精度。 接下来逐一分析。 1.传感器误差,传感器误差…

机器学习——贝叶斯

🌺历史文章列表🌺 机器学习——损失函数、代价函数、KL散度机器学习——特征工程、正则化、强化学习机器学习——常见算法汇总机器学习——感知机、MLP、SVM机器学习——KNN机器学习——贝叶斯机器学习——决策树机器学习——随机森林、Bagging、Boostin…

20241111,LeetCode 每日一题,用 Go 实现旋转链表

题目 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 解题思路 计算链表长度:遍历链表来获取链表的长度 n,因为链表的旋转其实是循环移动,所以将 k 对 n 取模 k k % n,这样可以…

Linux驱动开发(4):Linux的设备模型

在前面写的驱动中,我们发现编写驱动有个固定的模式只有往里面套代码就可以了,它们之间的大致流程可以总结如下: 实现入口函数xxx_init()和卸载函数xxx_exit() 申请设备号 register_chrdev_region() 初始化字符设备,cdev_init函数…

在线项目管理系统有哪些选择?2024年9款推荐

本文提及的2024值得关注的9款在线项目管理系统有: 1.PingCode; 2.Worktile; 3.华炎魔方; 4.企业微信; 5.Tapd; 6.青云客; 7.ClickUp; 8.Wrike; 9.Smartsheet。 许多企业在选择在线项…

pytorch量化训练

训练时量化(Quantization-aware Training, QAT)是一种在模型训练过程中,通过模拟低精度量化效应来增强模型对量化操作的鲁棒性的技术。与后训练量化不同,QAT 允许模型在训练过程中考虑到量化引入的误差,从而在实际部署…

datastage在升级版本到11.7之后,部分在11.3上正常执行的SP报错SQLSTATE = 22007: 本机错误代码 = -180

在升级版本到11.7之后,部分在11.3上正常执行的SP开始报错,报的SQL错误是时间参数问题,但是一样的SP可以直接call sp执行,也可以手动调用作业执行,只有设置定时调度时作业会报错, CALLXXX.XXX(1,CURRENT TIM…

Windows VSCode .NET CORE WebAPI Debug配置

1.安装C#插件 全名C# for Visual Studio Code,选择微软的 2. 安装C# Dev Kit插件 全名C# Dev Kit for Visual Studio Code,同样是选择微软的 3.安装Debugger for Unity 4.配置launch.json 文件 {"version": "0.2.0","config…

Docker使用docker-compose一键部署nacos、Mysql、redis

下面是一个简单的例子,展示如何通过Docker Compose文件部署Nacos、MySQL和Redis。请确保您的机器上已经安装了Docker和Docker Compose。 1,准备好mysql、redis、nacos镜像 sudo docker pull mysql:8 && sudo docker pull redis:7.2 &&…

【模块一】kubernetes容器编排进阶实战之k8s基础概念

kubernetes 基本介绍 kubernetes 组件简介 - master: 主人,并不部署服务,而是管理salve节点。 后期更名为: controll plane,控制面板。 etcd: 2379(客户端通信)、2…

【MPC-Simulink】EX04 信号归一化简化权重调节过程与提高数值计算质量

【MPC-Simulink】EX04 信号归一化简化权重调节过程与提高数值计算质量 参考 Matlab 官网提供的 Model Predictive Control Toolbox - Getting Started Guide,在 MPC 控制器中指定缩放因子,可以简化权重调节过程,提高数值计算质量。 当被控对…

Dubbo分布式日志跟踪实现

前言 随着越来越多的应用逐渐微服务化后,分布式服务之间的RPC调用使得异常排查的难度骤增,最明显的一个问题,就是整个调用链路的日志不在一台机器上,往往定位问题就要花费大量时间。如何在一个分布式网络中把单次请求的整个调用日…

企业网络转型:优势与挑战

◎ 网络研究观 事实上,现代企业网络是一个由相互连接的数据、应用程序和基础设施组成的复杂网络。然而,企业不应让这种复杂性成为服务不可靠、安全漏洞或网络停机的借口。 由于组织和公司面临着从并购到云扩展的诸多挑战,以及网络技术日益复…