大小端存储模式的几个问题

1. 为什么大小端能够并存至今?

答:

  • 历史惯性
  • 各有优势

大端优点:符号位在所表示的数据的内容的第一个字节中,便于快速判断数据的正负和大小。
大小端存储模式的几个问题_第1张图片

小端优点:

  • 低地址放低字节,所以在强制转换时不需要调整字节的内容。
  • CPU做数值运算时从内存中依次从低到高取数据进行运算直到最后刷新最高位的符号位,这样运算方式会更高效。
  • 大小端存储模式的几个问题_第2张图片

2. 发展现状

Interl x86系列芯片使用小端存储模式,
ARM的芯片默认小端,但可以切换到大端;
网络上普遍采用大端模式,使用大端的CPU: power pc 、DSP … …

大小端是由CPU架构决定的, 不是软件决定!!!

3. 为什么 网络序 是 大端序 ?

“网络协议规定接收到的第一个字节是高字节存放低地址”
或者说
TCP/IP协议规定把接收到的第一个字节当做高位看待,这就要求发送端发送的第一个字节是高字节。

4. 大小端转换(32位)

((uint32)(A)&0xff000000) >> 24
|(uint32)(A)&0x00ff0000) >> 8
|(uint32)(A)&0x0000ff00) << 8
|(uint32)(A)&0x000000ff) << 24)

5. 判断大小端模式程序

bool IsLittle()
{
    int x=1;
    return *(char*)&x == 1;
}

bool IsLittle()
{
    union check
    {
        int i;
        char ch;
    }c;
    c.i = 1;
    return (c.ch == 1);
}

你可能感兴趣的:(数据结构与算法)