zoukankan      html  css  js  c++  java
  • 03大端和小端(Big endian and Little endian)

    1.大端和小端的问题

    ​ 对于整型、长整型等数据类型,Big endian 认为第一个字节是最高位字节(按照从低地址到高地址的顺序存放数据的高位字节到低位字节),而 Little endian 则相反,它认为第一个字节是低位字节(按照从低地址到高地址的顺序存放数据的低位字节到高位字节)。

    (1)例如,假设从内存地址 0x0000 开始有以下数据:

    /*地址*/		0x0000		0x0001		0x0002		0x0003
    /*数据*/		0x12		0x34		0xab		0xcd
    

    ​ 如果我们去读取一个地址为 0x0000 的四个字节变量,若字节序为 big-endian,则读出结果为 0x1234abcd;若字节序为 little-endian,则读出结果为 0xcdab3412。

    (2)如果我们将 0x1234abcd 写入到以 0x0000 开始的内存中,则 Little endian 和 Big endian 模式的存放结果如下:

    /*地址*/				0x0000		0x0001		0x0002		0x0003
    /*big-endian*/		  0x12		  0x34		  0xab		  0xcd 
    /*little-endian*/	   0xcd		   0xab		   0x34		   0x12
    

    (3)总结:一般来说,x86 系列 CPU 都是 little-endian 的字节序,PowerPc 通常是 big-endian,网络字节序也是 big-endian。另外,有的 CPU 能通过跳线来设置 CPU 工作于 little endian 还是 big endian。

    对于 0x12345678 的存储:

    小端模式:(从低字节到高字节)

    低位地址 0x78 0x56 ox34 0x12 高位地址

    大端模式:(从高字节到低字节)

    低位地址 0x12 0x34 0x56 0x78 高位地址

    道虽迩,不行不至;事虽小,不为不成。
  • 相关阅读:
    HYSBZ 3813 奇数国
    HYSBZ 4419 发微博
    HYSBZ 1079 着色方案
    HYSBZ 3506 排序机械臂
    HYSBZ 3224 Tyvj 1728 普通平衡树
    Unity 3D,地形属性
    nginx 的naginx 种包含include关键字
    Redis 出现NOAUTH Authentication required解决方案
    mysql 8.0出现 Public Key Retrieval is not allowed
    修改jar包里的源码时候需要注意的问题
  • 原文地址:https://www.cnblogs.com/rock-cc/p/9418324.html
Copyright © 2011-2022 走看看