http://www.cnblogs.com/52php/p/6114643.htmlphp
所謂大端就是指高位值在內存中放低位地址,所謂小端是指低位值在內存中放低位地址。好比 0x12345678 在大端機上是 12345678,在小端機上是 78564312,而一個主機是大端仍是小端要看CPU類型以及運行在上面的操做系統。同一款CPU在不一樣的操做系統使用的大小端狀況是不一樣的。固然咱們一般使用的 x86 + windows是小端。html
測試大小端通常使用 union的特性。union是一個聯合體,全部變量公用一塊內存,只是在不一樣的時候解釋不一樣。其在內存中存儲是按最長的那個變量所須要的位數來開闢內存的windows
#include <stdio.h>
測試
#include <stdbool.h>
union
{
int
number;
char
s;
} test;
bool
testBigEndin() {
test.number = 0x01000002;
return
(test.s == 0x01);
}
int
main(
int
argc,
char
**argv) {
if
(testBigEndin()) {
printf
(
"big"
);
}
else
{
printf
(
"small"
);
}
}
個人 Mac輸出: smallspa
其中 union的實際內存長度是int,即一個字,在32位機上是32位。而char是一個Byte(8位),只會取第一個低地址字節。因此它的值能夠用來判斷大小端。操作系統