• 大端模式和小端模式


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

  • 相关阅读:
    01快速入门-03-条件判断和循环
    01快速入门-02-数组和对象
    01快速入门-01-基本语法和数据类型
    《Head First 设计模式》[01] 策略模式
    爬山算法与模拟退火算法的分析与实现
    Java虚拟机(二) —— 运行时数据区的OOM异常
    CoreJava(一)—— Java迭代语句
    Java虚拟机(二) —— 垃圾回收算法与垃圾回收器
    算法学习 —— 使用Linux C++练习OJ
    Java虚拟机(一) —— 运行时数据区
  • 原文地址:https://www.cnblogs.com/justkong/p/8807534.html
Copyright © 2020-2023  润新知