歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 小端模式與強制數據類型轉換

小端模式與強制數據類型轉換

日期:2017/3/1 10:33:21   编辑:Linux編程

1.先從一個問題說開去

相關閱讀:http://www.linuxidc.com/Linux/2012-02/53888.htm C++數據類型轉換的問題

[plain]
  1. #include <iostream.h>
  2. void main()
  3. {
  4. int i=0xb62;
  5. char c;
  6. c=i;
  7. cout<<c<<endl;
  8. }

這裡為什麼輸出的是b?

2.先檢測一下我們所使用的電腦的CPU的字節序

版本一(有問題,結果無論如何都是34,不能說明34是高地址的還是低地址的)
版本二(根據 shineyan1991的留言修改後得到的,在此謝謝 shineyan1991的建議)

從上圖可知,CPU的字節序是小端模式。

知識點
小端模式(Little-Endian)
數據類型中的高位數據存放於高地址部分,低位數據存放於低地址部分。簡而言之:高位在後,低位在前。
大端模式(Big-Endian)
數據類型中的高位數據存放於低地址部分,低位數據存放於高地址部分。簡而言之:高位在前,低位在後。

3.初步分析

0xb62是十六進制,因為char是一個字節的,所以我們只取低8位(丟棄了高字節,而保留了低字節),這是和語言有關,和CPU的架構無關,一個十六進制位轉換為4個二進制位,所以,低8位就是62轉換的,就是01100010,傳遞給char後,char的值就是98,根據ASCII,就會輸出b。
Copyright © Linux教程網 All Rights Reserved