大端存储与小端存储

大端存储与小端存储

什么大端存储什么是小端存储

大端存储(Big-endian)和小端存储(Little-endian)是计算机科学中数据在内存中存储的两种不同方式,主要涉及多字节数据类型(如整数、浮点数)的字节排列顺序。


大端存储(Big-endian):

  1. 在大端存储模式下,数据的高字节(或称作高位、最重要字节)被存储在内存的低地址处,而数据的低字节(或称作低位、最不重要字节)存储在高地址处。这意味着当你从低地址向高地址读取内存时,数据会按照从高到低的顺序出现,类似于阅读英文书的顺序,从左到右。
  2. 这种方式的一个好处是它直接对应于人类通常书写数值的方式,比如十六进制数0x1234,在大端模式下,内存中的布局就是0x12在前(低地址),0x34在后(高地址)。

小端存储(Little-endian):

  1. 相反,在小端存储模式下,数据的低字节存储在内存的低地址处,而高字节存储在高地址处。也就是说,当你从低地址开始读取时,最先读到的是数据的低字节,然后才是高字节,这与我们直观阅读数字的习惯相反。
  2. 对于相同的十六进制数0x1234,在小端模式下,内存布局会是0x34在前(低地址),0x12在后(高地址)。
  3. 小端存储的一个优势在于,由于很多现代处理器都是以字节为单位获取数据,且经常处理的是最低有效字节,因此小端模式可以使得某些类型的运算更加高效,特别是在不需要考虑整体数值的符号或大小比较时。
  4. 这两种存储模式各有优缺点,适用于不同的应用场景。在网络协议(如TCP/IP)中,通常采用大端存储以保证跨平台的一致性,而许多现代CPU(如Intel的x86系列)倾向于使用小端存储以提高性能。


内存地址和字节顺序


内存地址:

内存地址从低到高排列,从左到右依次增加。


字节顺序:

一个数据的字节顺序指的是在内存中各字节存储的顺序。


大端(Big-Endian)和小端(Little-Endian)

大端(Big-Endian):
  1. 高字节(最重要的字节)存储在低地址,低字节(最不重要的字节)存储在高地址。
  2. 例如,对于一个32位整数0x12345678:

                1. 内存中的存储顺序为:0x12 0x34 0x56 0x78

     3. 图示(地址从左到右递增)

        地址:  0x00  0x01  0x02  0x03数据:  0x12  0x34  0x56  0x78

小端(Little-Endian):
  1. 低字节(最不重要的字节)存储在低地址,高字节(最重要的字节)存储在高地址。
  2. 例如,对于一个32位整数0x12345678:

               1. 内存中的存储顺序为:0x78 0x56 0x34 0x12

     3. 图示(地址从左到右递增):

地址:  0x00  0x01  0x02  0x03
数据:  0x78  0x56  0x34  0x12



解释

在 大端 排列中,高字节存储在内存的低地址处,依次排列到低字节存储在高地址处。
在 小端 排列中,低字节存储在内存的低地址处,依次排列到高字节存储在高地址处。
通过这种方式,不同的平台可以选择不同的字节序排列以适应不同的处理器架构和应用需求。


大小端的优势和作用

  • 大端模式的优势‌在于它符合人类的阅读习惯,‌因为从最高有效字节开始读取数据更符合人类从左到右的阅读顺序。‌此外,‌大端模式在处理网络通信和数据交换时具有一定的优势,‌因为它使得多字节数据的表示更加直观和易于理解。‌
  •  ‌小端模式的优势‌则在于其效率。‌由于将最低有效字节存储在最低的内存地址上,‌计算机在处理字节序列时不需要进行额外的转换操作,‌可以直接按照顺序依次读写,‌这在一定程度上提高了数据处理的效率。‌此外,‌小端模式在实现上也更为简单,‌因为它避免了复杂的字节序转换需求。‌

C# 示列 大端小端的转换

using System;
using System.IO;public class EndianExample
{public static void Main(){int number = 0x12345678; // 小端存储的整数// 将小端整数转换为大端存储byte[] bigEndianBytes = BitConverter.GetBytes(number);Array.Reverse(bigEndianBytes); // 反转数组以转换为大端// 打印大端存储的结果bigEndianBytes.ToList().ForEach(b => Console.Write("{0:X2} ", b));Console.WriteLine();// 将大端字节数组转换回小端整数byte[] littleEndianBytes = bigEndianBytes;Array.Reverse(littleEndianBytes); // 反转回小端顺序int littleEndianNumber = BitConverter.ToInt32(littleEndianBytes, 0);// 打印转换回的小端整数的十六进制表示Console.WriteLine(littleEndianNumber.ToString("X8"));}
}

 本文来源于 数据存储:大端存储与小端存储_大端小端存储方式-CSDN博客

如有侵权请联系删除!!!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3 组合式 API:setup()

查看vue3官网介绍:组合式 API:setup() 在 Vue 3 中,组合式 API 的 setup() 函数是一个非常重要的特性,它提供了一种更灵活和可维护的方式来组织组件的逻辑。 基本概念 setup() 函数是在组件实例创建之前执行的,它用于…

零基础STM32单片机编程入门(三十八) 多传感器模块之跌倒检测实战源码

文章目录 一.概要二.实验原理三.实验控制流程四.STM32单片机跌倒监测实验(MPU6050直流有刷电机蜂鸣器)五.CubeMX工程源代码下载六.实验效果视频七.小结 一.概要 据统计每年约有 300 万老年人因跌倒受伤而在急诊室接受治疗,每五次跌倒就有一次会造成伤害&#xff0c…

网络如何发送一个数据包

网络如何发送一个数据包 网络消息发送就是点一点屏幕。 骚瑞,这一点都不好笑。(小品就是我的本质惹) 之前我就是会被这个问题搞的不安宁。是怎么知道对方的IP地址的呢?怎么知道对方的MAC呢?世界上计算机有那么多&…

阿里Qwen2开源大模型本地部署及调试全攻略

阿里Qwen2开源大模型本地部署及调试全攻略 #Qwen2系列大模型性能卓越,超越业界知名模型。开源后受到AI开发者关注,支持多种语言,提升多语言理解。在预训练和微调上优化,实现智能水平提升。Qwen2系列模型在各项能力上均领先&#…

python 获取pdf文件中的超链接

pip install pymupdf pip install fitzimport fitz # PyMuPDFdef get_pdf_links(pdf_path):# 打开PDF文件document fitz.open(pdf_path)links []for page_num in range(len(document)):page document[page_num]# 获取当前页面的链接for link in page.get_links():links.app…

WPF自定义控件

控件模板 顾名思义就是在原有的控件上进行模版修改成自己需要的样式 把ProgressBar修改为一个水液面的进度条 <Window x:Class"XH.CustomLesson.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://s…

2024年第三届全国大学生数据分析实践赛A 题

↑ ↑ ↑ ↑ ↑​​​​​​​ ↑​​​​​​​ ↑​​​​​​​ ↑​​​​​​​ ↑​​​​​​​ ↑​​​​​​​ ↑​​​​​​​ ↑​​​​​​​ ↑​​​​​​​ ↑​​​​​​​ ↑ ↑ ↑​​​​​​​ ↑​​​​​​​ ↑​​​​​​​ ↑​​​​​​​ …

【Java学习】方法的引用

所属专栏&#xff1a;Java学习 &#x1f341;1. 方法引用 方法的引用&#xff1a;把已经存在的方法拿来使用&#xff0c;当作函数式接口中抽象方法的方法体 " :: "是方法引用符 方法引用时需要注意&#xff1a; 1. 需要有函数式接口 2. 被引用的方法必须存在 3. …

浅谈SIMD、向量化处理及其在StarRocks中的应用

前言 单指令流多数据流(SIMD)及其衍生出来的向量化处理技术已经有了相当的历史&#xff0c;并且也是高性能数据库、计算引擎、多媒体库等组件的标配利器。笔者在两年多前曾经做过一次有关该主题的内部Geek分享&#xff0c;但可能是由于这个topic离实际研发场景比较远&#xff0…

3:html(CSS):基础语法3

3.1网页布局与id 3.1.1网页布局 在这里将使用<div>分成一个一个的块&#xff0c;然后进行CSS的美化。这里要说一下html是一个前端的代码&#xff0c;但是它写出来的东西单调缺少美感&#xff0c;CSS就是进行美化的&#xff0c;这里我们使用类的概念来美化我们的网站。 …

X-Recon:一款针对Web安全的XSS安全扫描检测工具

关于X-Recon X-Recon是一款功能强大的Web安全扫描与检测工具&#xff0c;该工具能够帮助广大研究人员识别网页端输入数据&#xff0c;并执行XSS扫描任务。 功能介绍 1、子域名发现&#xff1a;检索目标网站的相关子域名并将其整合到白名单中。这些子域名可在抓取过程中使用&am…

Vue+ElementUI技巧分享:创建一个带有进度显示的文件下载和打包组件

在现代前端开发中&#xff0c;用户体验至关重要&#xff0c;尤其是在处理文件下载时。为用户提供实时的下载进度显示和打包功能&#xff0c;不仅能提升用户体验&#xff0c;还能使应用更具专业性。在本文中&#xff0c;我们将创建一个 Vue 组件&#xff0c;用于显示文件下载进度…

与人打交道的七个绝招

与人打交道的七个绝招&#xff0c;学会了让你混得风生水起&#xff01; 一、跟强者打交道&#xff0c;别绕圈子。就事论事&#xff0c;直奔主题&#xff1b; 二、跟没钱的人打交道&#xff0c;就直接告诉他能挣多少钱&#xff1b; 三、跟小人打交道&#xff0c;越虚假越好&…

URP平面阴影合批处理 shadow

闲谈 相信大家在日常工作中发现了一个问题 &#xff0c; urp下虽然可以做到3个Pass 去写我们想要的效果&#xff0c;但是&#xff0c;不能合批&#xff08;不能合批&#xff0c;那不是我们CPU要干冒烟~&#xff01;&#xff09; 好家伙&#xff0c;熊猫老师的偏方来了 &#x…

JavaScript基础(33)_鼠标滚轮滚动事件、键盘事件

鼠标滚轮滚动事件&#xff1a;onwheel 获取鼠标滚轮滚动的方向&#xff1a;wheelDelta 比如&#xff1a;向上滚动&#xff1a;109 &#xff08;所有正值都是向上&#xff09; 向下滚动&#xff1a;-109&#xff08;所有负值都是向下&#xff09; 注意&#xff1a;当…

基于华为atlas下的yolov5+BoT-SORT/ByteTrack煤矿箕斗状态识别大探索

写在前面&#xff1a; 本项目的代码原型基于yolov5yolov8。其中检测模型使用的yolov5&#xff0c;跟踪模型使用的yolov8。 这里说明以下&#xff0c;为什么不整体都选择yolov8呢&#xff0c;v8无疑是比v5优秀的&#xff0c;但是atlas这块经过不断尝试没有过去&#xff0c;所以…

AWS boto3 脚本访问 AWS 资源

AWS boto3 脚本访问 AWS 资源 引言boto3主要功能常见用例安装和基本使用 boto3.Client() 低级客户端基本用法关键参数 boto3.resource() 高级客户端常见参数用法 boto3.resource VS boto3.client相似点不同点总结 关于身份验证凭证隐式身份凭证显式身份验证凭证assuem role如何…

出海笔记精华问答 | 第四期

更新出海问答第四期&#xff0c;希望可以继续帮助大家解决问题哈。 Q1:当stripe把资金全退给客户但是货又发了&#xff0c;这是什么情况&#xff1f; A1: 这种情况一般是stripe不跟你合作了或者发生了争议。 Q2:如何知道stripe回复你的邮件是人工回复还是机器人回复&#xff…

Linux基础入门---安装vmware

&#x1f600;前言 本篇博文是关于Linux基础入门和vmwarel5.5下载&#xff0c;希望你能够喜欢。 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满意是我的动…

Merkle树(Merkle Tree):高效地验证某个数据块是否包含在数据集中

目录 Merkle树(Merkle Tree) 一、基本结构 二、构建过程 三、主要作用 四、应用领域 Merkle树(Merkle Tree) Merkle树(Merkle Tree),也被称为默克尔树或Merkle哈希树,是一种基于哈希的数据结构,主要用于验证大规模数据集的完整性和一致性。它的名字来源于其发明…