不同的 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 的字节序 .

转载于:https://www.cnblogs.com/qiengo/p/4698502.html

大小端、位段(惑位域)和内存对齐相关推荐

  1. C语言:--位域和内存对齐

    位域 位域是指信息在保存时,并不需要占用一个完整的字节,而只需要占几个或一个二进制位.为了节省空间,C语言提供了一种数据结构,叫"位域"或"位段". " ...

  2. 字节对齐《c和指针》笔记--包含位域结构体的内存对齐(32bit,GCC)

    最近使用开发的过程中出现了一个小问题,顺便记录一下原因和方法--字节对齐 C99划定int.unsigned   int和bool可以作为位域类型.但编译器几乎都对此作了扩展,答应其它类型类型的存在. ...

  3. C语言 | 内存对齐03 - 内存对齐的公式

    文章目录 一.前言 二.公式 2.1.例子一 2.2.例子二 2.3.例子三 一.前言 每一个特定平台上的编译器都有自己的默认"对齐系数"(也叫对齐模数).GCC中默认#progr ...

  4. android 内存对齐,Go struct 内存对齐

    Go struct 内存对齐 常用数据结构系列文章链接: 1 如何计算结构体占用的空间 在 Go 语言中,我们可以使用 unsafe.Sizeof 计算出一个数据类型实例需要占用的字节数. 1 2 3 ...

  5. 什么是大小端?如何测试某台机器是大端还是小端。

    大小端是指数据在内存中的保存方式. 顾名思义 大小端 就是大端和小端. 大端模式: 所谓的大端模式,是指数据的高字节,保存在内存的低地址中,数据的低字节,保存在内存的高地址中. 低地址存在高位,高地址 ...

  6. C语言实现浮点数大小端转化

    操作了一天,终于实现了浮点数的大小端转化.通过VS内存查看对应的二进制存储,发现终于改变了.之前因为类型的转化不当,总是输出不了正确的结果,一定要注意不要发生类型转化.我用了26.5做实验,原本41 ...

  7. 大小端模式 字节序

    大.小端模式的说法,来自乔纳森·斯威夫特的小说<格列夫游记>,在小人国内部分裂成 Big-endian 和 Little-endian 两派,他们的争论在于一派要求从鸡蛋的大头把鸡蛋打破, ...

  8. C++随记总结(1)----关于C++中的大小端、位段(惑位域)和内存对齐

    C++随记总结(1)----关于C++中的大小端.位段(惑位域)和内存对齐 声明:欢迎任何人和组织转载本blog中文章,但必须标记文章原始链接和作者信息. 本文链接:http://www.cnblog ...

  9. 大小端、位段和内存对齐

    关于C++中的大小端.位段(惑位域)和内存对齐 来源: ♂戚建建㊣的日志 听到好几个朋友说到去一些公司做面试,总是遇到关于大小端.位段(或者叫位域)和内存对齐的考题,然后就不知所措了.虽然我认为很多开 ...

  10. 位域 内存 字节序_C语言中的位域、字节序、比特序、大小端(转)

    1.比特序 / 位序 / bit numbering / 我们知道一个字节有8位,也就是8个比特位.从第0位到第7位共8位.比特序就是用来描述比特位在字节中的存放顺序的.通过阅读网页的内容,关于比特序 ...

最新文章

  1. ADT 怎么删除logcat过滤规则
  2. python excle写数据
  3. 输入回车时结束循环python_python-用户输入退出以在循环时中断
  4. 2021中国到店消费新趋势洞察报告
  5. Dubbo与Zookeeper伪集群部署
  6. 超简单的内网邮件服务器搭建(CentOS7 postfix+dovecot)
  7. Mysql执行计划2
  8. 检查 ubuntu 版本_如何检查Ubuntu版本–快速简便的方法
  9. 高效程序员秘籍(9):快速查找硬盘上的文件和目录
  10. Keil4打开单片机工程一片空白,cpu100%程序卡死的问题解决
  11. 计算机机房不允许开窗么,机房新风系统的设计要求及规范 你了解多少?
  12. centos 7下搭建wiki系统
  13. 3D目标检测/点云/遥感数据集汇总
  14. unity 如何开发手机App
  15. CSS+CSS3超详细教程
  16. 【Android折叠屏适配】基于AutoSize框架适配折叠屏并兼容多窗口模式
  17. FXLMS主动降噪的simulink建模与仿真
  18. 一文详解什么是RNN(循环神经网络)
  19. 阿里云oss对象存储跨域设置
  20. IDC行业定义及分类

热门文章

  1. 用“连接”勾勒角色:《死亡搁浅》亡人的设计及其背后的故事谜题
  2. Laravel_post访问【419】问题解决方法
  3. 计算某一段程序消耗的内存和时间【C#】
  4. 常见Java面试题之和的区别?
  5. goldengate源端意外宕机,传输进程终止,导致OGG-01031报错
  6. Kafka MirrorMaker 跨集群同步工具
  7. 字符串与字符串函数 - 字符串输出 常用字符串函数
  8. ##安装MySql数据库并解决如果安装出错卸载的注意事项
  9. css : 使用浮动实现左右各放一个元素时很容易犯的错误
  10. Leetcode 回文数字判断