大端模式和小端模式

1.为何存在大小端模式

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

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             0dspa

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既能够工做在大端模式,也能够工做在小端模式code

相关文章
相关标签/搜索