本文发布于 2020-04-03, 最后更新于 2188 天前,其中的信息可能已经有所发展或是发生改变。
文章摘要
内存存储时,两种不同的字节序 计算机在对数据进行存储时,字节是以什么顺序排列的呢? 要解决这个问题首先得了解电脑中保存数据时的两种不同顺序: 内存地址的顺序是由低到高的,人书写的习惯顺序则是由高到低的 大端模式(大端字节序) :指的是高位内容存在低地址,低位内容存在高地址。 小端模式(小端字节序) :指的是高位内容存在高地址,低位内容存在低地址。 看着很难懂吧,下面我们用一个图,和数据"12345…
内存存储时,两种不同的字节序 计算机在对数据进行存储时,字节是以什么顺序排列的呢? 要解决这个问题首先得了解电脑中保存数据时的两种不同顺序: 内存地址的顺序是由低到高的,人书写的习惯顺序则是由高到低的 大端模式(大端字节序) :指的是高位内容存在低地址,低位内容存在高地址。 小端模式(小端字节序) :指的是高位内容存在高地址,低位内容存在低地址。 看着很难懂吧,下面我们用一个图,和数据"12345678"来描述这两种不同的模式到底有何种区别 图解字节序 我们知道,数字的各个位虽然读作个十百千万,但我们习惯把高位写在左边(内存低位),那么这种类似高位在前,低位在后的存储方式就是大端模式 内存地址(由低到高) 0x01 0x02 0x03 0x04 数据 12 34 56 78 相反地,另外一种高位写在右边(内存高位),即高低位颠倒存储的方式就是小端模式 PS:设想一下某一天,10000这个数字要写成00001,是不是会很奇怪 内存地址(由低到高) 0x01 0x02 0x03 0x03 数据 78 56 34 12 下面继续举例子来加深理解 假设有一个32位的int变量,它的值为305419896,如果用我们惯用的计数方式,不难得出它的十六进制表示为 0x12345678 那么它在大端模式的内存中也为 0x12345678 而在小端模式的内存中,他的个位就会存储在低位,表示就会变成 0x78563412 是不是很神奇呀内存存储时,两种不同的字节序
计算机在对数据进行存储时,字节是以什么顺序排列的呢?
要解决这个问题首先得了解电脑中保存数据时的两种不同顺序:
- 大端模式(大端字节序):指的是高位内容存在低地址,低位内容存在高地址。
- 小端模式(小端字节序):指的是高位内容存在高地址,低位内容存在低地址。
看着很难懂吧,下面我们用一个图,和数据"12345678"来描述这两种不同的模式到底有何种区别
图解字节序
| 内存地址(由低到高) | 0x01 | 0x02 | 0x03 | 0x04 |
| 数据 | 12 | 34 | 56 | 78 |
| 内存地址(由低到高) | 0x01 | 0x02 | 0x03 | 0x03 |
| 数据 | 78 | 56 | 34 | 12 |
下面继续举例子来加深理解
假设有一个32位的int变量,它的值为305419896,如果用我们惯用的计数方式,不难得出它的十六进制表示为0x12345678
那么它在大端模式的内存中也为0x12345678
而在小端模式的内存中,他的个位就会存储在低位,表示就会变成0x78563412
是不是很神奇呀
本文采用 CC BY-NC-SA 4.0 协议进行授权,如无注明均为原创,转载请注明出处。
标题:计算机中的字节序问题(大小端问题)作者:九仞之行链接:http://dev.styunlen.cn/archives/post-562.html
💬 评论 (2)✿


