zoukankan      html  css  js  c++  java
  • (深入理解计算机系统)大端模式和小端模式

    计算机系统

    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开始存放)

    内存地址 0x4000 0x4001 0x4002 0x4003
    存放内容 0x78 0x56 0x34 0x12

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

    内存地址 0x4000 0x4001 0x4002 0x4003
    存放内容 0x12 0x34 0x56 0x78

    注意:通常我们说的主机序(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);  
        }
    
  • 相关阅读:
    Linux I/O状态实时监控iostat
    Linux系统常用监控系统状态信息命令
    Linux查看网络信息命令
    Linux服务器进程信息查看命令
    Linux服务器的日志管理
    Linux令普通用户拥有root权限
    linux后台运行之&和nohup区别,模拟后台守护进程
    Linux之shell终端使用操作快捷键
    linux解压缩命令之unzip,tar(持续更新)
    Centos7 安装部署redis及其入门使用
  • 原文地址:https://www.cnblogs.com/yanghong-hnu/p/5700865.html
Copyright © 2011-2022 走看看