大端存储与小端存储

这篇具有很好参考价值的文章主要介绍了大端存储与小端存储。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上次整型在内存中的存储忘说了一个:

 文章来源地址https://www.toymoban.com/news/detail-806736.html

根据数据类型不同,所占的字节数也不同。

 

所占字节多了,数据在内存中的存储顺序的问题也就出现了。

 

数据在内存中的存储顺序分两种:

 

  • 大端[字节序]存储:

把一个数据的高位字节序(字节中存储的数据的位数更高的,可类比十进制的百位等高位)的内容存放在低地址处,把低位字节序(字节中存储的数据的位数更低的,可类比十进制的个位等低位)的内容放在高地址处,就是大端字节序存储。


  • 小端[字节序]存储:

 

把一个数据的高位字节序的内容存放在高地址处,把低位字节序的内容放在低地址处,就是小端字节序存储。

 

例  十进制数3

 

它的十六进制(数据在内存中的大小一般用十六进制表示,但本质上存储还的是二进制)为

 

0X 00 00 00 03\n\n如果是大端存储,那它在内存中地址由低到高存储的是

 

0X 00 00 00 03

 

如果是小端存储,那它在内存中地址由低到高存储的是

 

0X 03 00 00 00

 

越靠近0x的字节序越高,因为0x越靠近0x的字节序中存储的数据的真实值要乘以16的n次方中的n越大。可以类比十进制数1022,最左端的1真实值要x10的3次方,即1不是1而是1000


是大端存储还是小端存储,取决于硬件和编译器。

 


那么怎么判断自己的电脑和使用编译器是大端还是小端呢?

 

法一:可以用指针+强制类型转换

大端存储与小端存储,c语言

 因为p是char类型的所以*一次(解引用一次)向后访问一个字节

 

所以如果a中的1是小端存储,那么01就在最前面(因为int类型的1的十六进制是0X 00 00 00  01)

 

此时*p就==1

 

如果a中的1是大端存储,那么00就在最前面

 

 

此时*p就==0


法二:利用共用体的特性

大端存储与小端存储,c语言

 

 

因为共用体中a,b共用一个空间(a的4个字节),所以向a中存放1,再看b的值,就可以判断大小端存储了

 

 

 

 

到了这里,关于大端存储与小端存储的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • keil_arm 大端小端 寄存器 栈

    @栈result   

    2024年02月11日
    浏览(35)
  • 大端字节序和小端字节序及应用场景

    小端字节序 存储和 大端字节序 存储是两种不同的数据存储方式,其区别在于对于多字节数据(如整数、浮点数等)的存储顺序不同。 小端字节序 存储(Little Endian)是指低位字节存储在内存的低地址处,高位字节存储在内存的高地址处。例如,32位整数0x12345678在内存中的存

    2024年02月05日
    浏览(43)
  • 计算机系统中的大端模式和小端模式

    最近工作中有用到一个知识点,就是大小端,当然这是一个小的知识点,为什么写一个博文呢,我其实是想测试一下chatGPT,所以我开始将自己的想法告诉这个chatbot,让他给我一些写博文的建议,并且给我解答了一些疑惑,今天将自己的学习笔记整理出来展示给大家(by the

    2024年02月03日
    浏览(36)
  • C#和Java的大端位和小端位的问题

    C#代码里就是小端序,Java代码里就是大端序, 大端位 :big endian,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,也叫高尾端 小端位 :little endian,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,也叫低尾端 这个

    2024年02月12日
    浏览(32)
  • 一文读懂大端、小端、字节序、MSB、LSB、MSBs、LSBs

    5分钟完全理解上述嵌入式、物联网开发中很扯蛋的几个被玩坏概念。 对于涉及 bit 流的概念中 MSB(Most Significant Bit):最高有效位,二进制中代表最高值的比特位,这一位对数值的影响最大。 LSB(Least Significant Bit):最低有效位,二进制中代表最低值的比特位。 以字面值数

    2024年02月15日
    浏览(76)
  • 基于反序位域的大端协议处理方法

    本文主要描述如何在C/C++软件中以一种简便的方法处理通信协议中的大小端转换方法;由于资源限制,目前在仅在windows平台的部分编译器与cpu中进行验证。 数据在内存中存储的基础单元是字节(Byte),最小的存储单元是位(bit);在常用的ARM架构中,按照字节处理数据时,

    2024年02月19日
    浏览(31)
  • APK与小程序渗透

    由于APK和小程序与服务器通信还是采用的是 https 协议,只是使用了加密。只要获取到了HTTP的请求报文就可以回归到Web渗透的层面。然后就可以直接抓包,分析流量数据包的特征。 抓不到小程序的包怎么办?或者对服务器之间的通信进行了加密如何解决? 安装相应的证书。

    2024年02月08日
    浏览(32)
  • 揭秘H5与小程序的测试奥秘!

    最近接触了较多关于H5页面的测试,H5页面的测试除了业务逻辑功能测试外,其他部分的测试方法基本是可以通用的,在此对H5页面和小程序的一些通用测试方法进行总结分享给大家。 H5可以跨平台,开发成本相对较低; H5可随时上线就更新版本,适合快速迭代; H5可以轻量的

    2024年01月17日
    浏览(40)
  • flask 与小程序 菜品详情和分享功能

    问题1:  template is / 是什么函数?有什么作用和功能?如何使用? 模板 | 微信开放文档 WXML提供模板(template),可以在模板中定义代码片段,然后在不同的地方调用。 使用 is 属性,声明需要的使用的模板,然后将模板所需要的 data 传入 is 属性可以使用 Mustache 语法,来动态决

    2024年01月18日
    浏览(38)
  • stm32利用mqtt与小程序通信

    本项目实现的功能如下:通过stm32连接esp8266,然后利用mqtt协议连接到服务器,同时小程序端也连接到服务器,通过订阅和发布主题来使得这两个客户端能进行数据的传输。 本章所用到的器件如下: STM32F103ZET6最小系统板 ESP8266-01S模块 USB转microUSB数据线 四根杜邦线 连接如下:

    2023年04月08日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包