计算机中的字节序问题(大小端问题)
本文发布于1750天前,最后更新于 1602 天前,其中的信息可能已经有所发展或是发生改变。

内存存储时,两种不同的字节序

计算机在对数据进行存储时,字节是以什么顺序排列的呢?

要解决这个问题首先得了解电脑中保存数据时的两种不同顺序:

内存地址的顺序是由低到高的,人书写的习惯顺序则是由高到低的

  • 大端模式(大端字节序):指的是高位内容存在低地址,低位内容存在高地址。
  • 小端模式(小端字节序):指的是高位内容存在高地址,低位内容存在低地址。

看着很难懂吧,下面我们用一个图,和数据"12345678"来描述这两种不同的模式到底有何种区别

图解字节序

我们知道,数字的各个位虽然读作个十百千万,但我们习惯把高位写在左边(内存低位),那么这种类似高位在前,低位在后的存储方式就是大端模式

内存地址(由低到高)0x010x020x030x04
数据12345678

相反地,另外一种高位写在右边(内存高位),即高低位颠倒存储的方式就是小端模式

PS:设想一下某一天,10000这个数字要写成00001,是不是会很奇怪

内存地址(由低到高) 0x010x020x030x03
数据78563412

下面继续举例子来加深理解

假设有一个32位的int变量,它的值为305419896,如果用我们惯用的计数方式,不难得出它的十六进制表示为0x12345678

那么它在大端模式的内存中也为0x12345678

而在小端模式的内存中,他的个位就会存储在低位,表示就会变成0x78563412

是不是很神奇呀

评论

  1. Styunlen
    Windows Chrome 80.0.3987.132
    4 年前
    2020-8-27 17:26:21

    之前内存存储顺序写反了,已经修正回来了|´・ω・)ノ

  2. Styunlen
    博主
    Windows Edge 80.0.361.109
    5 年前
    2020-4-03 23:48:56

    清明节,学校安排周末不上课,这样子写完作业后就有充足的时间去填坑啦!

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
Source: https://github.com/zhaoolee/ChineseBQB
Source: https://github.com/zhaoolee/ChineseBQB
Source: https://github.com/zhaoolee/ChineseBQB
颜文字
Emoji
小恐龙
花!
滑稽大佬
演奏
程序员专属
上一篇
下一篇