大端模式和小端模式區別與檢測

  1. 背景

    1. 在內存中一個地址存儲一個字節(Byte)的數據,即8位。
    2. 一個int型數據有32位,需要佔用4Byte的空間,那麼應該怎麼存儲int的數據呢?是高位先存儲還是低位先存儲?因此產生了兩種不同的模式,即大端模式和小端模式。
  2. 是什麼

    1. 大端模式:高位先存,數據的高位(即大端)存在低地址;
    2. 小端模式:低位先存,數據的低位(即小端)存在低地址。
  3. 舉例子
    例如:int temp = 0xAABBCCDD; // 假設存儲在地址0x1000;

    • 大端模式:
      0x1000 0xAA;
      0x1001 0XBB;
      0x1002 0xCC;
      0x1003 0XDD;
    • 小端模式:
      0x1000 0xDD;
      0x1001 0XCC;
      0x1002 0xBB;
      0x1003 0XAA;
  4. 怎麼知道當前系統是大端模式還是小端模式?
    測試方法:使用union來測試大小端模式。代碼如下:

bool checkSystem()
{
  union check
  {
      int i;
      char ch;
  } chk;
  chk.i = 1;
  return (chk.ch==1);//如果是大端模式,返回false;如果是小端模式,函數返回true。
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章