菜鸟笔记
提升您的技术认知

大端模式和小端模式-ag真人游戏

1.为什么存在大小端模式

计算机系统中,每个地址单元对应一个字节(8bit),一种数据类型的数据可能占用若干字节。如何安排这种数据类型中的各个字节,哪个字节在低地址哪个在高地址,以及一个字节中的各个比特的排列,这就牵涉到大小端模式。也就是大家常说的字节序和比特序问题。字节序和比特序一般是一致的,要么都是大端,要么都是小端。

2.什么是大端和小端

大端模式:低位(字节/比特)放在高地址中,高位(字节/比特)放在低地址中。
小端模式:低位(字节/比特)放在低地址中,高位(字节/比特)放在高地址中。
高位和地位是对于我们正常阅读和书写来说,最开始是高位,例如int型数0x1234,0x12是字节的高位,0x34是字节的低位。
根据以上规则,我们给出在大、小端序系统中整数0x0a0b0c0d的表示方式。
对于大端系统:
byte addr        0                     1                 2                3
bit offset  01234567 01234567 01234567 01234567
    binary  00001010 00001011 00001100 00001101
        hex          0a                   0b              0c              0d
对于小端系统:
byte addr          3                  2                1                 0
bit offset  76543210 76543210 76543210 76543210
    binary  00001010 00001011 00001100 00001101
        hex            0a               0b              0c             0d

3. 检测大小端

联合体的存放顺序是所有成员都从低地址开始存放,利用该特性可以轻松获得当前系统采用大端还是小端模式

bool isbigendian()    
{    
    union num    
    {    
        int a;    
        char b;    
    }num;    
    num.a = 0x1234;    
    if( num.b == 0x12 )    
    {    
        return true;    
    }    
    return false;    
}  

4.常见的大小端

一般操作系统都是小端模式;而通讯协议是大端模式;java和平台无关,默认是大端模式
常见的cpu的大小端:
大端:powerpc、ibm、sun
小端:x86
arm既可以工作在大端模式,也可以工作在小端模式

网站地图