计算机只能理解 0 和 1 组成的二进制数据, 一个 bit 的值是 0 或 1,八个这样的 bit 组成了一个字节,通过字节,计算机可以表示一些复杂的数据,比如:音频、视频等,有些数据只需要用一个字节来表示,比如英文字符,而有些数据需要多个字节来表示,比如:汉字,
对于多字节的数据,存储的时候会有字节顺序的问题,也就是字节序
字节序是什么
字节序是计算机存储多字节数据的方式,目前主流的方式有:大端字节序和小端字节序,字节序主要是针对多字节的数据类型,比如 short、int
等类型
- 大端字节序
高位字节存储在内存的低地址上,低位字节存储在内存的高位地址上
- 小端字节序
高位字节存储在内存的高地址上,低位字节存储在内存的低地址上
如何理解字节序
我们平常书写和阅读数字的习惯是从左到右的,所以把最左边的字节当作最高位字节,最右边的字节当作做最低位字节,从左到右,表示从高位字节到低位字节
比如:对于 0x01020304,它的大端和小端字节序在内存中的布局如下图所示
0x 01 02 03 04 总共四个字节大小,以人们习惯的阅读顺序,0x01 处于左边,属于高位字节,0x04 处于右边,属于低位字节
内存地址从 0x 00 00 00 07 到 0x 00 00 00 0A 4个字节的空间,刚好能存储得下
根据大端字节序的的规则:高位字节存储在内存低地址,所以处于高位字节的 0x01 存储在 0x 00 00 00 07 地址处,紧接着 次高位字节