Tekson

禧之狼

博客园 首页 联系 订阅 管理
  81 随笔 :: 0 文章 :: 28 评论 :: 22万 阅读

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   珍宝老王  阅读(378)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
点击右上角即可分享
微信分享提示