MSB与LSB

MSB和LSB指的分别是:Most Significant Bit和Least Significant Bit

最高有效位和最低有效位

最高有效位指二进制数中最高值的比特位。例如十进制数:15389。这个数对数值影响最大的是在万位上的数字1。而二进制数,例如:1010b,对这个二进制数影响最大的是最左边的数字1。

字节序的问题产生于编译平台所在的CPU不同。

C/C++语言编写的程序中,数据存储顺序与编译平台所在的CPU相关。而Java编写的程序则唯一采用big endian方式来存储数据。所有网络协议也都是采用big endian的方式来传输。因此big endian方式也称之为网络字节序。

MSB和LSB表示的是某个值中的哪一个数对该值的影响最大或最小。


Big Endian 大端(Motorola)

数据的高位字节放到内存的低地址端,低位字节放到内存的高地址端。

Little Endian 小端(Intel)

数据的低位字节放到内存的低地址端,高位字节放到内存的高地址端。

大端和小端所描述的是字节与字节之间的关系。


假设一个字节数组Array与内存对应,也就是Array[0]的内存地址在前面,也就是低地址位置;而Array[1]的地址在后面,也就是高地址后面。

因此大端就会把十六进制数0x1234中的12存入Array[0],34存入Array[1]。

小端会把34存入Array[0],12存入Array[1]。