筆試題 如何判斷主機是大端還是小端(位元組序)

2021-06-27 02:52:31 字數 629 閱讀 8968

今天看《linux程式設計》中關於跨平台需要注意的事項,看到了大端小端的問題。突然想起實驗室一同學的筆試題,如何判斷主機的大端還是小端。

所謂大端就是指高位值在記憶體中放低位位址,所謂小端是指低位值在記憶體中放低位位址。比如0x12345678在大端機上是12345678,在小端機上是78564312,而乙個主機是大端還是小端要看cpu型別以及執行在上面的作業系統。同一款cpu在不同的作業系統使用的大小端情況是不同的。當然我們通常使用的x86+windows是小端。

測試大小端一般使用union的特性。union是乙個聯合體,所有變數公用一塊記憶體,只是在不同的時候解釋不同。其在記憶體中儲存是按最長的那個變數所需要的位數來開闢記憶體的。

**如下:     

[cpp]view plain

copy

#include 

using

namespace std;  

union

test;  

bool testbigendin()  

void main()    

其中union的實際記憶體長度是int,即乙個字,在32位機上是32位。而char是乙個byte,只會取第乙個低位址位元組。所以他的值可以用來判斷大小端。

筆試題 如何判斷主機是大端還是小端(位元組序)

今天看 linux程式設計 中關於跨平台需要注意的事項,看到了大端小端的問題。突然想起實驗室一同學的筆試題,如何判斷主機的大端還是小端。所謂大端就是指高位值在記憶體中放低位位址,所謂小端是指低位值在記憶體中放低位位址。比如0x12345678在大端機上是12345678,在小端機上是78564312...

如何判斷主機是大端還是小端(位元組序)

所謂大端就是指高位值在記憶體中放低位位址,所謂小端是指低位值在記憶體中放低位位址。比如0x12345678在大端機上是12345678,在小端機上是78563412,而乙個主機是大端還是小端要看cpu型別以及執行在上面的作業系統。同一款cpu在不同的作業系統使用的大小端情況是不同的。當然我們通常使用...

如何判斷主機是大端還是小端(位元組序)

所謂大端就是指高位值在記憶體中放低位位址,所謂小端是指低位值在記憶體中放低位位址。比如0x12345678在大端機上是12345678,在小端機上是78564312,而乙個主機是大端還是小端要看cpu型別以及執行在上面的作業系統。同一款cpu在不同的作業系統使用的大小端情況是不同的。當然我們通常使用...