Big Endian(大端)指最高有效字節(jié)在內(nèi)存的低地址位;Little Endian(小端)指最低有效字節(jié)在內(nèi)存的低地址位。
具體來(lái)說(shuō),對(duì)于單個(gè)字節(jié)的數(shù)據(jù),不存在大小端的問(wèn)題。對(duì)于多字節(jié)的數(shù)據(jù)類型,其字節(jié)是如何在內(nèi)存中分布的呢? 比如一個(gè)int,在32位的機(jī)器上占用4個(gè)字節(jié),假定其值為0x12345678,內(nèi)存地址為0x1000 - 0x1003,那么這個(gè)值在0x1000、0x1001、0x1002、0x1003上的分布見(jiàn)下表:
| 0x1000 | 0x1001 | 0x1002 | 0x1003 | |
|---|---|---|---|---|
| Big Endian | 12 | 34 | 56 | 78 |
| Little Endian | 78 | 56 | 34 | 12 |
大小端只是存儲(chǔ)的一個(gè)原理,取決于主機(jī)和操作系統(tǒng),而且不光出現(xiàn)在內(nèi)存中,因此實(shí)際編程中對(duì)于有些I/O操作可能需要對(duì)字節(jié)序有一個(gè)更靈活的考慮。大端更符合人的閱讀習(xí)慣,不過(guò)對(duì)于機(jī)器來(lái)說(shuō)就不存在這個(gè)問(wèn)題了。