欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

嵌入式系统数据存储的大端模式小端模式应用举例0x12345678存储到8000H

程序员文章站 2022-03-01 17:37:32
一、背景:因为不同架构的处理器,所以造成了数据在各种处理器中数据存储方式的不同;一般情况下分为两种,一种是大段模式,另外一种是小段模式。通常情况下:x86、ARM,DSP架构处理器都是小端模式,而Motorola为大端模式。二、大小端模式的概念:小端模式:指数据的高位保存在内存的高地址中,而数据的低位则保存在内存的低地址中;大端模式:是指数据的高位保存在内存的低地址中,而数据的低位则保存在内存的高地址中。可以看出两种存储数据的方式正好相反。三、应用举例:以存储一个32位数0x12...

一、背景:

因为不同架构的处理器,所以造成了数据在各种处理器中数据存储方式的不同;一般情况下分为两种,一种是大端模式,另外一种是小端模式。通常情况下:x86、ARM,DSP架构处理器都是小端模式,Motorola等为大端模式。

二、大端小端模式的概念:

小端模式(Little-endian):指数据的高数据位保存在内存的高地址中,而数据的低数据位则保存在内存的低地址中;

大端模式(Big-endian):是指数据的高数据位保存在内存的低地址中,而数据的低数据位则保存在内存的高地址中。

可以看出两种存储数据方式正好相反。

三、应用举例:

以存储一个32位数0x12345678到8000H~8003H四个字节单元中为例,讲解一下数据分别以大端模式和小端模式在内存中的存储不同;

数据大小端模式存储举例
地址 8003H 8002H 8001H 8000H
小端模式 12 34 56 78
大端模式 78 56 34 12

内存中8000H为低地址,内存地址从8001H-->8001H-->8002H-->8003H以此递进增加,所以8003H为内存地址的高地址;小端模式下:低字节数据存放在内存的低地址中,所以低字节的0x78存放在低地址8000H中,0x56存放在8001H中,以此类推;而大端模式下:高字节数据存放在内存的低地址中,所以数据0x12存放在8000H中,以此类推。

 

因为处理器可以访问的最小单元为字节(1Byte=8bit),所以32位数据0x12345678会被分为4Byte分别存储在4个字节单元中,合如下表可以看出小端模式下,内存中各个数据bit位的详情;

bit位 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
十六进制 12 34 56 78
进制转换↓ 1 2 3 4 5 6 7 8
二进制 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 0 0 0 0
1Byte=8bit Byte 3 Byte 2 Byte 1 Byte 0

 


因为小编自己能力水平有限,文中难免有错误或表达失误的信息,还望广大阅读者留言批评指正,谢谢。

本文地址:https://blog.csdn.net/praguejing/article/details/108220356