大端和小端

来源:互联网 发布:手机查看淘宝图片空间 编辑:程序博客网 时间:2024/06/09 23:50

大端与小端

我们知道1字节是8个二进制位的集合,而计算机是以字节为单位来储存数据的,所以当一个数据类型需要用多个字节来储存的时候,如 short int,int orfloat,我们就要对这些字节在内存中的储存排序做一个安排。这些储存顺序所指的就是大端和小端。

我们有一个int类型数据:

B1B2B3B400000001000000100000001100000100

一个int数据在内存中是如何储存的?
用顺序B1B2B3B4来储存的叫大端法,有相反顺序即B4B3B2B1顺序储存的叫小端法。


大端法

大端法是计算机数据储存中的一种储存方式,核心思想是低位字节储存在高地址。
给一个数0x89ABCDEF,用int类型储存, 值0x89占一个字节,是最高位字节,值0xEF也占一个字节,是最低位字节。

address0x010x020x030x04binary10001001101010111100110111101111hex value0x890xAB0xCD0xEF

看出它们的特点了吗?最高字节0x89储存在最低地址0x01,而最低字节0xEF是储存在高地址0x04中的。这就是大端法的储存方式。

小端法

小端法与大端法相反,它把最高字节储存在高地址,最低字节储存在低地址。这种储存方式对我们习惯的从左到右的书写习惯不同,有点难懂。

address0x010x020x030x04binary11101111110011011010101110001001hex value0xEF0xCD0xAB0x89

这就是小端法,大端法是比较符合我们的书写习惯的。但不幸的是,大多数操作系统采用小端法,像 Windows, Linux32 和 Linux64 等操作系统。
我通常用一句话分辨大端和小端的区别。
小端法就是把低字节储存在低地址。
但你不能说大端法是高字节储存在高地址,因为这也是小端法而不是大端法。


注意

上面说的大端和小端都只适用于多字节数据类型,如short int, int,而字符串是不适用的,因为字符串是多个char的集合,每个char只用1字节储存,而不是使用多字节储存的一个数据类型。
它也不适用于位串,即一个字节内,大端和小端的字符'A'都用同一个位串00001010储存。

0 0
原创粉丝点击