大端模式和小端模式区别与检测

  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。
}

你可能感兴趣的:(OS操作系统,大端模式,小端模式,C++,操作系统)