主机字节序
文章目錄
- 1 主機字節序和CPU
- 2 主機字節序和操作系統
- 3 主機字節序決定了什么
- 4 主機字節序對我們有影響嗎
- 5 為什么不統一主機字節序
字節序不僅僅是在字符存儲中的概念、在內存中、網絡傳輸中也存在字節序的概念。
1 主機字節序和CPU
不同架構的處理器,支持不同的字節序,有些是大端、有些是小端、有些是雙端。
比如: X86–>小端 PowerPC–>大端 ARM–>雙端
注:雙端意味著我們可以二選一。
2 主機字節序和操作系統
實際的情況是,一旦選擇了特定的操作系統,那么字節序也就固定下來了。Android操作系統、IOS操作系統、windows操作系統,它們都只能運行在小端模式下。所以,在我們選定了操作系統的同時,字節序也就隨之固定了下來。由于這里所講的字節序是和計算機平臺相關的,所以,我們也稱之為主機字節序。
3 主機字節序決定了什么
主機字節序決定了一個多字節數據,在內存中的排列方式。
int a = 0x12345678;
大端(BE): 從高字節開始存儲(高字節存到低地址內存)
小端(LE): 從低字節開始存儲(低字節存到低地址內存)
4 主機字節序對我們有影響嗎
從程序運行的角度來說,主機字節序對我們是沒有影響的,怎么理解呢?
- 計算機按照大端法加載數據到內存,同時它也將按照大端法來解析內存中的數據。
- 計算機按照小端法加載數據到內存,同時它也將按照小端法來解析內存中的數據。
主要在如下兩個方面會有點影響:
當我們需要查看程序的機器指令時:
LE平臺 --> mov ax,0x0102 --> A1 02 01
–> 在LE平臺上,機器指令中的數據是實際數據的反序
網絡編程時 --> 網絡字節序(大端)–> 它與平臺無關,是為了解決網絡傳輸問題所制定的一個規則。
5 為什么不統一主機字節序
主機字節序的選擇,是一種二選一的情況,選擇了一方,就必然丟了另一方。而到底選擇哪種主機字節序,是所有硬件廠商需要考慮的問題,這不是我們能夠決定的。
總結
- 上一篇: 无锡农村商业银行营业时间
- 下一篇: typedef