一、什么是大端和小端

小端就是低地址端存放数据的低位,高地址端存放数据的高位

  大端就是高地址端存放数据的低位,低地址端存放数据的高位

  例:0x12345678

   小端模式:低地址--------------------------------à高地址

            0x78  |  56  |  34  |  12

   大端模式:低地址--------------------------------à高地址

            0x12  |  34  |  56  |  78

 

二、为什么会有大端和小端

因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8bitchar之外,还有16bitshort型,32bitlong型(要看具体的编译器),另外,对于位数大于 8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。例如一个16bitshortx,在内存中的地址为0x0010x的值为0x1122,那么0x11为高字节,0x22为低字节。对于大端模式,就将0x11放在低地址中,即0x0010中,0x22放在高地址中,即0x0011中。而小端模式,就将0x22放在低地址0x10中,将0x11放在高地址0x11中。

    大端与小端      大端与小端



三、数组在大端和小端模式的储存

例:以0x34567819为例

 大端:                   小端:

  高地址                       高地址  

    arr[3]  0x19  低位              arr[3]  0x34   低位

     arr[2]  0x78                    arr[2]  0x56    

     arr[1]  0x56                    arr[1]  0x78   

     arr[0]  0x34  高位           arr[0]  0x19   高位

  低地址                    低地址

 

四、实际案例

例:int arr[10] = {1,2,3};

    int *p = arrc;

    *p = 10;

     P++;    

假设这里p加一个字节,若p指向arr首元素地址100p++则指向的地址为101,这里是小端模式。

大端与小端

相关文章:

  • 2021-12-19
  • 2021-10-09
  • 2021-11-26
  • 2021-05-15
  • 2021-06-16
猜你喜欢
  • 2022-12-23
  • 2021-11-13
相关资源
相似解决方案