zoukankan      html  css  js  c++  java
  • 大端模式和小端模式

    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既可以工作在大端模式,也可以工作在小端模式

  • 相关阅读:
    Ant简单工程的构建
    [转载] 无所不能的“蚂蚁”--Ant
    引体向上高级技巧:停顿式引体向上!
    引体向上腰酸?下背痛?你做对了吗?
    划船训练常见错误:含胸驼背肩胛骨活动不足
    引体向上
    仰卧飞鸟:仰卧哑铃飞鸟图解教程
    蝶机夹胸:蝴蝶机夹胸夹胸/飞鸟动作图解教程
    史密斯卧推:杠铃史密斯下斜卧推、上斜机卧推、平板卧推动作图解
    练胸秘籍:胸肌训练5大重点
  • 原文地址:https://www.cnblogs.com/justkong/p/8807534.html
Copyright © 2011-2022 走看看