little-endian VS. big-endian
被這兩件東西搞了很久,曾經看資料時理解了,但過一段分間又很容易忘記了。今天遇到一道題,要寫個程式檢查所用的系統是big endian還是little endian。首先,要知道什麼是big endian,什麼是little endian?一些資料的解釋如下:
位元組排序 | 含義 |
Big-Endian | 一個Word中的高位的Byte放在記憶體中這個Word區域的低地址處。 |
Little-Endian | 一個Word中的低位的Byte放在記憶體中這個Word區域的低地址處。 |
我覺得這樣很不適合記憶,很快就混淆了。用big endian對應值高位優先,little endian對應低位優先,更容易記憶些。計算機在使用記憶體時總是從低地址向高地址擴充套件的,所謂值高位優先就是把要儲存的數值的高位放在記憶體的低位,低位優先就是把值的低位放在記憶體的低位。例如要把十六進位制表示的數值0x3132儲存到地址為0x00080開始的記憶體裡,在big endian和little endian分佈如下:
big-endian little-endian 0x00080 0x31(高位優先) 0x32(低位優先) 0x00081 0x32 0x31
有了以上的知識,要做上面的題目就容易了。我的做法如下:
unsigned short int x = 0x3132;
char h, l;
h = *(char *)&x;
l = *(char *)((char *)&x + 1);
if(h == 0x31 && l == 0x32)
printf("big endian!n");
else if(h == 0x32 && l == 0x31)
printf("little endian!n");
當然,也還有其它做法,不用同時檢查兩個位元組也行,就只檢查低位記憶體其實已經足夠的了。 [@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7406370/viewspace-978125/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Big-Endian Little-Endian
- 關於Big-Endian/Little-Endian 位元組順序的簡單記錄
- Airflow vs. Luigi vs. Argo vs. MLFlow vs. KubeFlowAIUIGo
- MVC vs. MVP vs. MVVMMVCMVPMVVM
- ELF file data encoding not little-endianEncoding
- git revert .vs. git reset .vs. git rebaseGit
- String.format VS. StrSubstitutor VS. NamedParameterJdbcTemplateORMJDBC
- 搞懂:資料科學vs.機器學習vs.資料分析vs.商業分析資料科學機器學習
- HTMLCollection vs. NodeListHTML
- PostgreSQL vs. MySQLMySql
- AutoIt vs. QTPQT
- 【譯】GraphQL vs. RESTREST
- JavaScript運算子:== VS. ===JavaScript
- Accoona VS. GoogleGo
- Ansible vs. TerraformORM
- 大資料檔案格式比較:AVRO vs. PARQUET vs. ORC大資料VR
- Java 下的 JSON庫效能比較:JSON.simple vs. GSON vs. Jackson vs. JSONPJavaJSON
- Git branching: master vs. origin/master vs. remotes/origin/masterGitASTREM
- 柏拉圖洞穴寓言 vs. 表徵假說 vs. 表觀遺傳
- Spring WebClient vs. RestTemplateSpringWebclientREST
- Redis vs. MongoDB比較RedisMongoDB
- 引用計數 vs. GCGC
- javascript requestAnimationFrame vs. setTimeoutJavaScriptrequestAnimationFrame
- HTML 5 Canvas vs. SVGHTMLCanvasSVG
- PostgreSQL vs. Oracle 測試SQLOracle
- WebForms VS. MVC(翻譯)WebORMMVC
- PostgreSQL vs. MS SQL ServerSQLServer
- Angular vs. React - the tie breakerAngularReact
- JavaScript構建(編繹)系統大比拼:Grunt vs. Gulp vs. NPMJavaScriptNPM
- Quarkus vs. SpringBoot - RedditSpring Boot
- Ruby on Rails Mountable vs. Full EngineAI
- 語言戰爭: PHP vs. RubyPHP
- URL vs. HTML 錄製模式HTML模式
- 轉貼:Spring vs. EJBSpring
- HTML 5 vs. 本地應用HTML
- 模板 vs. 硬編碼 HTMLHTML
- J2EE vs. NET, Java vs. C#:比較公正的評價 (轉)JavaC#
- Navigating Kubernetes Certification: CKAD vs. CKA vs. CKS, Including KCNA and KCSA