Tekson

禧之狼

博客园 首页 联系 订阅 管理

1 字节顺序

Little-Endian(小端)就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端,也即先存放低位字节,后存放高位字节。

Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端,也即先存放高位字节,后存放低位字节。

2 位顺序

首先,要区别高位地址和最高有效位(MSB: Most Significant Bit)以及底位地址和最低有效位(LSB: Least Significant Bit)的概念。

116CPU中的0x8B8A的表示:

对于大端CPU而言,

地址位

Bit

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

 

 

MSB

-

-

-

-

-

-

-

-

-

-

-

-

-

-

LSB

数据位

Value

1

0

0

0

1

0

1

1

1

0

0

0

1

0

1

0

对于小端CPU而言,

地址位

Bit

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

 

 

MSB

-

-

-

-

-

-

-

-

-

-

-

-

-

-

LSB

数据位

Value

1

0

0

0

1

0

1

1

1

0

0

0

1

0

1

0

可见,对于大端CPU而言,地址位与数据位顺序完全相同;而对于小端CPU而言,地址位与数据位顺序完全相反。于是,可以先将16位的数值的二进制数值写出,然后“大端相同、小端相反”的思想即可列出该数值各位在内存中指定地址的16位上的排列顺序了。

232CPU中的0x12345678的表示:

对于大端CPU而言,

地址位

Bit

0 …… …… ……  ……  …… …… ……  …… 31

 

 

MSB …… …… ……  …… ……  ……  ……  LSB

数据位

Value

0001 0010 0011 0100 0101 0110 0111 1000

对于小端CPU而言,

地址位

Bit

31 …… …… ……  …… …… ……  …… ……  0

 

 

MSB …… …… ……  …… ……   …… ……  LSB

数据位

Value

0001 0010 0011 0100 0101 0110 0111 1000

posted on 2012-09-06 23:38  珍宝老王  阅读(374)  评论(0编辑  收藏  举报