zoukankan      html  css  js  c++  java
  • 大小端、位段(惑位域)和内存对齐

    不同的 CPU 有不同的字节序类型 这些字节序是指整数在内存中保存的顺序 这个叫做主机序
    最常见的有两种
    1 . Little endian :将低序字节存储在起始地址
    2 . Big endian :   将高序字节存储在起始地址

    LE little-endian

    最符合人的思维的字节序
    地址低位存储值的低位
    地址高位存储值的高位
    怎么讲是最符合人的思维的字节序,是因为从人的第一观感来说
    低位值小,就应该放在内存地址小的地方,也即内存地址低位
    反之,高位值就应该放在内存地址大的地方,也即内存地址高位

    BE big-endian
    最直观的字节序
    地址低位存储值的高位
    地址高位存储值的低位
    为什么说直观,不要考虑对应关系
    只需要把内存地址从左到右按照由低到高的顺序写出
    把值按照通常的高位到低位的顺序写出
    两者对照,一个字节一个字节的填充进去

     

    例子:在内存中双字 0x01020304(DWORD) 的存储方式

    内存地址
       4000 4001 4002 4003
    LE  04   03   02   01
    BE  01   02   03   04

     

    例子:如果我们将 0x1234abcd 写入到以 0x0000 开始的内存中,则结果为 
          big-endian  little-endian
    0x0000   0x12       0xcd
    0x0001   0x23       0xab
    0x0002   0xab       0x34
    0x0003   0xcd       0x12
    x86 系列 CPU 都是 little-endian 的字节序 .

  • 相关阅读:
    [C语言嵌入式系统编程修炼] 软件架构与内存操作篇
    [C陷阱和缺陷] 第2章 语法“陷阱”
    DAO是什么技术
    Java泛型:类型擦除
    Java泛型:泛型类、泛型接口和泛型方法
    定义泛型接口
    java,<E>什么意思?
    java List 去重(两种方式)
    java中List集合及其遍历详解
    java 遍历arrayList的四种方法
  • 原文地址:https://www.cnblogs.com/qiengo/p/4698502.html
Copyright © 2011-2022 走看看