返回介绍

A.5 二进制和十六进制

发布于 2024-10-08 23:14:15 字数 2132 浏览 0 评论 0 收藏 0

十六进制表示法常用于提供更为方便的二进制数据(如内存地址或存储位标记设置的整数)视图。这样做的原因是,每个十六进制位对应于 4 位。表 A.2 说明了这种对应关系。

表 A.2 十六进制数和对应的二进制数

十六进制位

对应的二进制数

0

0000

1

0001

2

0010

3

0011

4

0100

5

0101

6

0110

7

0111

8

1000

9

1001

A

1010

B

1011

C

1100

D

1101

E

1110

F

1111

要将十六进制值转换为二进制,只需将每个十六进制位替换为相应的二进制数即可。例如,十六进制 0xA4 对应于二进制数 10100100。同样,可以轻松地将二进制值转换为十六进制,方法是将每 4 位转换为对应的十六进制位。例如,二进制值 10010101 将被转换为 0x95。

Big Endian 和 Little Endian

奇怪的是,都使用整数的二进制表示的两个计算平台对同一个值的表示可能并不相同。例如,Intel 计算机使用 Little Endian 体系结构来存储字节,而 Motorola 处理器、IBM 大型机、SPARC 处理器和 ARM 处理器使用 Big Endian 方案(但最后的两种系统可配置成使用上述任何一种方案)。

术语 Big Endian 和 Little Endian 是从“Big End In”和“Little End In”(指内存中单词(通常为两个字节)的字节顺序)衍生而来的。在 Intel 计算机(Little Endian)中,先存储低位字节,这意味着十六进制值 0xABCD 在内存中将被存储为 0xCD 0xAB。Motorola(Big Endian)计算机按相反的顺序存储,因此 0xABCD 在内存中被存储为 0xAB 0xCD。

这些术语最先出现在 Jonathan Swift 编写的《Gulliver’s Travels》一书中。为讽刺众多政治斗争的非理性,Swift 杜撰了假想国中两个喜欢争论的政治派别:Big Endians 和 Little Endians,前者坚持认为从大的一头打破鸡蛋更合理,而后者坚持认为从小的一头打破鸡蛋更合理。

作为软件工程师,应了解目标平台的词序,它会影响对通过网络传输的数据的解释方式以及数据在二进制文件中的存储方式。在上面的例子中,二字节内存模式 0xABCD 在 Little Endian 计算机上表示十进制值 52651,而在 Big Endian 计算机上表示十进制值 43981。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文