大端模式:是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中
小端模式:是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。
采用大端方式进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。到目前为止,采用大端或者小端进行数据存放,其孰优孰劣也没有定论。
嵌入式系统开发者应该对Little-endian和Big-endian模式非常了解。采用Little-endian模式的CPU对操作数的存放方式是从低字节到高字节,而Big-endian模式对操作数的存放方式是从高字节到低字节。
16bit宽的数0x1234
在Little-endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:
内存地址
|
0x4000
|
0x4001
|
存放内容
|
0x34
|
0x12
|
在Big-endian模式CPU内存中的存放方式则为:
内存地址
|
0x4000
|
0x4001
|
存放内容
|
0x12
|
0x34
|
32bit宽的数0x12345678
在Little-endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:
内存地址
|
0x4000
|
0x4001
|
0x4002
|
0x4003
|
存放内容
|
0x78
|
0x56
|
0x34
|
0x12
|
而在Big-endian模式CPU内存中的存放方式则为:
内存地址
|
0x4000
|
0x4001
|
0x4002
|
0x4003
|
存放内容
|
0x12
|
0x34
|
0x56
|
0x78
|
在C语言中,不同于结构体,共用体(联合体)中的几种不同类型的变量存放在同一段内存单元中。利用这一特点,可以用联合体变量判断ARM或x86环境下,存储系统是是大端还是小端模式。
#include "stdio.h"
int main()
{
union data
{
int a; //4 bytes
char b; //1 byte
} c; //联合体的最大字节数与其中所占最大字节的成员一样大。
c.a=1;
if (c.b==1)
printf("It is Little_endian!\n");
else
printf("It is Big_endian!\n");
return 1;
}
说明:
1 在c中,联合体(共用体)的数据成员都是从低地址开始存放。
2 若是小端模式,由低地址到高地址c.a存放为0x01 00 00 00,c.b被赋值为0x01;
————————————————————————————
地址 0x00000000 0x00000001 0x00000002 0x00000003
c.a 01 00 00 00
c.b 01
————————————————————————————
3 若是大端模式,由低地址到高地址c.a存放为0x00 00 00 01,c.b被赋值为0x0;
————————————————————————————
地址 0x00000000 0x00000001 0x00000002 0x00000003
c.a 00 00 00 01
c.b 00
————————————————————————————
4 根据c.b的值的情况就可以判断cpu的模式了,在XP环境下的intel CPU是小端模式,用ADS可测试arm 920T也是小段模式!
相关推荐
在计算机科学中,数据在内存中的存储方式有两种主要格式:大端模式(Big-Endian)和小端模式(Little-Endian)。这两种模式涉及到多字节数据类型,如整数和浮点数,如何在其字节序列中存储其值。本文将深入探讨...
- **大小端模式测试**:可以创建一个包含多字节数据的变量,如uint32_t,然后将其分别赋值为0x12345678或0x78563412。读取这个变量的每个字节并比较其顺序,以确定系统的大小端模式。 ### 4. 示例代码 ```c #...
有些系统(如Intel x86/x64)采用小端模式,即最低有效字节存储在内存地址的低位;而其他系统(如PowerPC和SPARC)则采用大端模式,最高有效字节在地址低位。当数据在这些系统之间传输时,需要进行大小端转换。在...
"详解大端模式和小端模式" 大端模式和小端模式是计算机科学中的一种字节顺序表示方法,用于描述多字节数据在内存中的存储顺序。该概念最早由Danny Cohen提出,用于网络协议的字节顺序表示。 大端模式(Big-Endian...
在计算机科学中,大端模式(Big_endian)和小端模式(Little_endian)是两种不同的字节序,主要应用于多字节数据类型的存储。字节序是指在一个多字节的数据结构(如整数、浮点数)中,较高位字节(高位字节通常包含...
**Android 端 Iperf 测试 APP 知识点详解** `iperf` 是一个广泛使用的网络性能测试工具,主要用于测量网络带宽、延迟以及数据传输的稳定性。在 Android 平台上,`iperf` 通常被开发成 APP 形式,以便用户能够方便地...
本教程将深入讲解如何在ZYNQ PS端进行以太网收发测试,以确保网络通信功能的正确性。 以太网是局域网中最常见的通信协议,其工作在OSI模型的第二层——数据链路层。ZYNQ PS端通常集成有千兆以太网控制器,如EMAC...
在PC端,为了测试和调试ModbusTCP设备或系统,我们常常需要使用专门的测试工具。本篇文章将深入探讨ModbusTCP以及如何利用PC端的测试工具进行有效的通信测试。 **1. ModbusTCP简介** Modbus是最早出现的工业通信...
在大端模式和小端模式的转换宏部分,代码可能定义了一些预处理器宏,这些宏用于在不同字节序的系统上正确地处理数据。大端模式是指数据的最高有效字节存储在内存的最低地址,而小端模式则相反。在处理多字节类型如...
3. 大小端模式测试:创建一个多字节数据,如一个32位整数,将其存储在堆栈中,然后读取并比较其字节顺序。 4. 结果验证:根据测试结果,输出堆栈增长方向和系统大小端模式。 理解这些基本概念对于编写高效、稳定的...
2. 进入"服务测试"或"工程模式",找到"测试模式"选项并启用。 **六、USB_driver详解** USB_driver是用于电脑识别和控制Android设备的驱动程序,确保ADB能够正常识别设备。对于64位的Windows 8系统,确保安装的是...
在ICT测试中,测试程序会按照特定的测试模式执行,例如上述描述中提到的ICT1, ICT(Vo2), ICT(Vo3)等,这些测试步骤对应了不同的测试条件和判断标准。比如,测试ICT(Vo2)时,如果Vo2电压小于Vo1电压,则表明施加的0.2...
在"PTP (Precision Time Protocol)高精度时间同步协议CS模式测试代码"中,我们可以预期找到以下关键知识点: 1. **PTP消息类型**:PTP协议定义了多种消息类型,包括时钟同步消息、跟随者更新消息、延迟请求消息和...
知识点:多端口测试是性能测试的重要环节,需要了解测试仪规格、设备类型、测试模式等,避免测试错误影响测试结果。 Avalanche性能测试手册是思博伦仪器性能测试的详细手册,包括硬件连接、软件使用、组网、HTTP...
PHP是广泛用于服务器端编程的一种语言,ThinkPHP5是基于PHP的框架,它提供了一系列便捷的开发工具和模式,以加速Web应用的构建。在这个场景下,微信小程序接口测试工具可以与ThinkPHP5配合,帮助开发者在开发过程中...
在Java网络游戏服务器端测试中,我们关注的核心是服务器性能、稳定性、安全性以及用户体验。服务器端是游戏世界的骨架,它处理玩家交互、游戏逻辑、数据存储等关键任务。在这个场景下,`AsyncServer.java` 文件很...
基于SpringBoot框架, 采用Page Object设计模式UI自动化测试框架,支持APP、Web、HTML5三端,,基于 TestNG 测试框架构建测试用例,支持消息通知、失败截屏、HTTP 报告、并发执行等特性资料齐全+详细文档+高分项目+...
通过观察测试结果,可以确认数据是以大端还是小端模式存储。 整个文档涵盖了反射内存卡的基础知识、测试环境的搭建、大小端测试的概念以及实际的操作步骤,为了解和应用反射内存卡提供了一个相对完整的知识框架。...
### USB3.0 物理层发送端测试方案解析 #### 一、USB3.0 概述 USB (Universal Serial Bus) 即通用串行总线,是一种用于连接计算机与外围设备的标准接口。自2000年后,随着USB 2.0版本的普及,该标准得到了广泛应用...