美文网首页
大小端存储

大小端存储

作者: 小白兔胡萝卜 | 来源:发表于2021-08-09 10:43 被阅读0次

在计算机系统中,存储是以字节为单位的,每个地址单元都对应着一个字节,一个字节=8bit。在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器)。对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,如何安排多个字节的存储,这就有了大端存储模式和小端存储模式。

小端:较高的有效字节存放在较高的的存储器地址,较低的有效字节存放在较低的存储器地址。

大端:较高的有效字节存放在较低的存储器地址,较低的有效字节存放在较高的存储器地址。

如果将一个16位的整数0x1234存放到一个短整型变量(short)中。这个短整型变量在内存中的存储在大小端模式由下表所示。

大小端存储差异

C语言判断大小端模式

方法一:

voidIsBigEndian()

{

    shortinta=0x1122; //十六进制,一个数值占4位charb =  *(char*)&a;//通过将short(2字节)强制类型转换成char单字节,b指向a的起始字节(低字节)

    if( b ==0x11) //低字节存的是数据的高字节数据

    {

        //是大端模式

    }

    else

    {

        //是小端模式

    }

}

方法二:

voidIsBigEndian() //原理:联合体union的存放顺序是所有成员都从低地址开始存放,而且所有成员共享存储空间

{

    uniontemp

    {

        shortint a;

        char b;

    }temp;

    temp.a=0x1234;

    if(temp.b==0x12) //低字节存的是数据的高字节数据

    {

        //是大端模式

    }

    else

    {

        //是小端模式

    }

}

参考:https://www.jianshu.com/p/152268b0ea19

相关文章

  • 大小端存储

    在计算机系统中,存储是以字节为单位的,每个地址单元都对应着一个字节,一个字节=8bit。在C语言中除了8bit的c...

  • 数据存储大小端

    大小端 大端(Big-endian):高字节在前,即高字节在低地址处;通俗讲即数据以字节为单位存储,为多个字节,其...

  • cookies sessionStorage和localstor

    相同点:都存储在客户端 不同点: (1)存储大小 · cookie数据大小不能超过4k。 · sessionSto...

  • 11.16

    Java 采用的是大端还是小端?大端(不清楚) 什么大小端? 大小端在计算机业界,Endian表示数据在存储器中的...

  • 2018-11-12

    相同点:都存储在客户端 不同点: 1.存储大小 ·cookie数据大小不能超过4k。 ·sessionStorag...

  • cookies sessionStorage和localstor

    相同点:都存储在客户端 不同点: 存储大小 cookie数据大小不能超过4k。 sessionStorage和lo...

  • cookie,sessionStorage和localStora

    相同点 都存储在客户端。 不同点 1.存储大小 cookie数据大小不能超过4k。 sessionStorage和...

  • cookies sessionStorage和localstor

    相同点:都存储在客户端 不同点:1.存储大小 ·cookie数据大小不能超过4k。 ·sessionStorage...

  • cookies sessionStorage和localstor

    相同点:都存储在客户端不同点:1.存储大小· cookie 数据大小不能超过4k· sessionStorage和...

  • Java 字段在内存中存储是大端还是小端

    Java 字段在内存中是小端存储的,即低位字节在前,高位字节在后。 大小端的最小单位是字节,即大小端决定的是字节的...

网友评论

      本文标题:大小端存储

      本文链接:https://www.haomeiwen.com/subject/fhidvltx.html