(深入理解计算机系统)大端模式和小端模式

计算机系统

Big-Endian大端模式和Little-Endian小端模式

定义

  1. Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
  1. Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
  2. 网络字节序:TCP/IP各层协议将字节序定义为Big-Endian,因此TCP/IP协议中使用的字节序通常称之为网络字节序.
  3. 高/低字节定义:在十进制中我们都说靠左边的是高位,靠右边的是低位,在其他进制也是如此。就拿 0x12345678来说,从高位到低位的字节依次是0x12、0x34、0x56和0x78.

例子分析:

    unsigned int value = 0x12345678

1.Big-Endian: 低地址存放高位

栈底 (高地址)
buf[3](0x78)低位
buf[2](0x56)
buf[1](0x34)
buf[0](0x12)高位
栈顶 (低地址)

2.Little-Endian: 低地址存放低位

栈底 (高地址)
buf[3](0x12)高位
buf[2](0x34)
buf[1](0x56)
buf[0](0x78)低位
栈 顶 (低地址)

在Little-endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)

内存地址0x40000x40010x40020x4003
存放内容0x780x560x340x12

在Big- endian模式CPU内存中的存放方式则为

内存地址0x40000x40010x40020x4003
存放内容0x120x340x560x78

注意:通常我们说的主机序(Host Order)就是遵循Little-Endian规则。所以当两台主机之间要通过TCP/IP协议进行通信的时候就需要调用相应的函数进行主机序 (Little-Endian)和网络序(Big-Endian)的转换。
检查CPU是大端还是小端:

    int checkCPU(void)  
    {  
        union  
        {  
            int a;  
            char b;  
        }c;  
        c.a = 1;  
        return (c.b == 1);  
    }

转载于:https://www.cnblogs.com/yanghong-hnu/p/5700865.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值