解析bob综合体育官方入口大端模式和小端模式
  • 时间:2022-07-16
  • 点击率:

一.概念和详细解释

本文引用地址:http://www.eepw.com.cn/article/148717.htm

各种系统的计算机常用的字节存储机制主要有两种:大端和小端,即大端模式和小端模式。

我们来回顾两个关键词,MSB和LSB:

Msb:最高有效位-最高有效位

Lsb:最低有效位-最低有效位

大百科模式

Big-endian: MSB存储在最低地址。

例如,双字节数0x1234以big-endian的形式存在于起始地址0x00002000中:

|数据| -地址

| 0x12 | - 0x00002000

| 0x34 | - 0x00002001

在Big-Endian中,位序列中的序列号排列如下(以双字节数0x8B8A为例):

位| 0 1 2 3 4 5 6 7 | 8 9 10 11 12 13 14 15

- MSB - LSB

val | 1 0 0 0 1 0 1 1 | 1 0 0 0 1 0 1 0 |

+ - +

= 0x8 B 8 A

小端模式

Little-endian: LSB存储在最低地址。

例如,双字节数0x1234以little-endian的形式存在于起始地址0x00002000中:

|数据| -地址

| 0x34 | - 0x00002000

| 0x12 | - 0x00002001

在Little-Endian中,位序列中的序列号排列正好与Big-Endian相反,其方式如下(以双字节数0x8B8A为例):

位| 15 14 13 12 11 10 9 8 | 7 6 5 4 3 2 1 0

- MSB - LSB

val | 1 0 0 0 1 0 1 1 | 1 0 0 0 1 0 1 0 |

+ - +

= 0x8 B 8 A

二、大端小端情况下数组的存储:

以unsigned int value = 0x12345678为例,我们可以使用unsigned char buf[4]通过按两个字节顺序查看其存储来表示该值:

大端:低位地址存储高位,如下所示:

高位地址

-

BUF[3](0x 78)-低位

buf[2] (0x56)

buf[1] (0x34)

BUF[0](0x 12)-高位

-

低位地址

小端:低位地址存储低位,如下所示:

高位地址

-

BUF[3](0x 12)-高位

buf[2] (0x34)

buf[1] (0x56)

buff[0](0x 78)-低位

-

低位地址

三。大端和小端转换方法:

大端序转换为小端序,如下所示:

# define bigtolittle 16(A)((((uint 16)(A)0x ff 00)>& gt8) |

(((uint16)(A) 0x00ff) 8))

# define bigtolittle 32(A)((((uint 32)(A)0x ff 000000)& gt;& gt24) |

((((uint32)(A) 0x00ff0000)>& gt8) |

(((uint32)(A) 0x0000ff00) 8) |

(((uint32)(A) 0x000000ff) 24))

四、大端小端检测方法:

如何检查处理器是大端还是小端?

Union的存储顺序是uniON的所有成员从低位地址开始存储。使用这个特性,可以很容易地确定CPU是以小端还是大端模式读写内存。

int checkCPUendian()

{

联盟

{

无符号int a;

无符号字符b;

} c;

c . a = 1;

return(c . b = = 1);

}

/*return 1:小尾序,return 0:大尾序*/


客服QQ: 点击这里
地址:台州市寨金路899号电子时代广场5116室 客服QQ:329435596
Copyright © 2022 bob综合体育官方入口 版权所有

08980-89895656

服务时间:7X10小时