参考博客

https://blog.csdn.net/ce123_zhouwei/article/details/6971544

https://my.oschina.net/alphajay/blog/5478

一、高地址和低地址

二、高字节低字节

如int a=16777220,化为十六进制是0x01 00 00 04则04属于低字节,01属于高字节

三、大小端模式

(1)如果a在内存中的存放顺序为下图(即低字节存放在高地址),则为大端模式

(2)如果a在内存中的存放顺序为下图(即低字节存放在低地址),则为小端模式

(3)如何互换(通过移位操作再或)

四、存放顺序

1、原则

(1)一个整数类型内部

低地址存储低位,高地址存储高位。比如int a=1,则存储情况为0000(高地址) 0000 0000 0001(低地址)

(2)若干个局部变量(在栈中存储的)

先定义的高地址,后定义的低地址

(3)类、结构体或数组的元素

先定义的低地址,后定义的高地址

五、测试说明

(1)整数类型内部:低地址存储低位,高地址存储高位。

#include<iostream>
using namespace std;union U
{char str[2];short int num;
};int main()
{U u;u.str[0] = 10;//存放在低地址,0000 1010u.str[1] = 1;//存放在高地址, 0000 0001cout << u.num << endl;//组合的时候,整数类型内部低地址存储低位,高地址存储高位,因此是0000 0001 0000 1010 = 266system("PAUSE");return 0;
}

(2)若干个局部变量(在栈中存储的):先定义的高地址,后定义的低地址。

类、结构体、数组中的元素:先定义的低地址,后定义的高地址

class Test {
public:int m;int n;
};
int main()
{int a;char b;int c[10];Test t;cout << (size_t)&a << endl;//结果1cout << (size_t)&b << endl;//结果2cout << (size_t)&c << endl;//结果3cout << (size_t)&t << endl;//结果4cout << (size_t)&t.m << endl;//结果5cout << (size_t)&t.n << endl;//结果6system("PAUSE");return 0;
}

结果1>结果2>结果3>结果4=结果5<结果6

分析:

结果1>结果2>结果3>结果4,是因为a、b、c、t都是局部变量,在栈上存储,栈是从高地址到低地址,因此地址逐渐减小。

结果5<结果6,是因为结构体内部,先定义的地址小,后定义的地址大,这与类内的成员,数组总的元素,都是类似的。

分析它们的数值差,可以发现字节对齐问题,数组名占用4字节等问题。

总的来说,具体的地址,需要考虑“栈的高地址到低地址”、“字节对齐”、“数组”这样的特殊情况等等。

高地址和低地址、高字节低字节、大小端模式的转换,存储顺序相关推荐

  1. 高地址和低地址、高字节低字节、大小端模式(及如何互换),存储顺序(!!)

    参考博客 https://blog.csdn.net/ce123_zhouwei/article/details/6971544 https://my.oschina.net/alphajay/blo ...

  2. 大小端模式 字节序

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

  3. 通俗易懂说字节序,大小端,网络序和主机序

    通俗易懂说字节序,大小端,网络序和主机序 1. 什么是字节序 1.1 为什么字符串不用转序 2. 什么是网络字节序 3. 什么是主机字节序 3.1 主机字节序 3.2 大小端字节序 4. 举例 4.1 ...

  4. 通俗易懂说字节序,大小端,网络序和主机序(2)htonl和ntohl 源码实现

    通俗易懂说字节序,大小端,网络序和主机序(2)htonl和ntohl 源码实现 1. htonl 内核源码实现 1.1 注意:这里有判断,如果本身内存中存储的就是网络序,那就不转 1.1 __bswa ...

  5. 理解字节序(大小端)

    >字节序 在网络传输的协议和数据报中,常常遇到字节序的概念,也就是大端字节序(big endian)和小端字节序(little endian),这是计算机的两种存储数据的方式: 大端字节序:高位 ...

  6. Java字节序与大小端转换_什么时候要进行大小端字节序的转换? | 学步园

    什么时候要进行大小端字节序的转换? 通过socket收发数据(在intel的处理器上), 什么时候要进行大小端字节序的转换? 比如发一个int型的数据出去,要不要进行转换? 还是两端一样,就不用考虑转 ...

  7. IP地址转换、主机大小端、htonl、ntohl实现

    http://blog.csdn.net/zww0815/article/details/7592940 #include <IOSTREAM> //#include <WINSOC ...

  8. 大端模式、小端模式、高字节序、低字节序、MSB、LSB

    摘要:你知道内存是怎么读取数据的吗?知道数据是怎么一个一个字节发送的吗?是低字节先发还是高字节先发?是bit0先发还是bit7先发?是从低地址开始读还是从高地址开始读?看完本篇比应该就明白了~ 内存的 ...

  9. 大小端字节序介绍以及判断当前环境字节序的程序【C语言】

    文章目录 1.大小端字节序介绍 2. 判断当前环境的字节序程序 1.大小端字节序介绍 首先我们先来介绍什么是大端字节序,什么是小端字节序: 大小端字节序指的是数据在电脑上存储的字节顺序 小端字节序存储 ...

最新文章

  1. 水晶报表导出数据并实现打印
  2. c++宏定义常量为什么使用移位_干货 | C语言系列3——常量,运算符,常用数学函数.........
  3. mysql 5.7.11 my.ini,mysql5.7以上版本配置my.ini的详细步骤
  4. Oracle的SQL基础之用户与表空间
  5. Delphi 的消息机制浅探二
  6. Mediawiki安装经验分享
  7. android 手势高度,克制的 Android 手势插件:滑动 Home 键
  8. 【编程题】【Scratch四级】2021.03 程序优化
  9. HDU-6555 The Fool
  10. python量化策略——Fama-French三因子模型(回归获取alpha)阿尔法α策略。
  11. 使用qq 、微信和新浪微博三种方式登录demo
  12. 三原色亮度最高_色彩搭配三原色
  13. 太极拳经验谈 --- 董英杰
  14. VSCode+Marp:用Markdown做幻灯片-宋森安(基础篇)
  15. 图像相似算法最全总结
  16. 东北师范大学计算机学院的导师李俊,东北师范大学计算机科学与信息技术学院研究生导师简介-殷明浩...
  17. 恒驰冬测 恒大汽车迎性能大考
  18. 1024分辨率《源代码》HD中英双字无水印
  19. 【干货】关于电商售后(退货、退款、换货)的相关流程
  20. matlab的自定义常数是a,Simulink仿真入门到精通(二) Simulink模块

热门文章

  1. Datawhale MySQL 训练营 Task2 查询语句
  2. SPOJ 694/705 后缀数组
  3. android -- 蓝牙 bluetooth (二) 打开蓝牙
  4. Delphi 记录类型- 结构指针
  5. Dynamics CRM 2015 站点地图公告配置实体显示名称的变更
  6. Command 传参的几种方式
  7. scanf 输入加逗号(或者不加逗号)出现的异常及解决方案
  8. Linux负载均衡软件LVS之一(概念篇)
  9. 前端之JavaScript 02
  10. LNMP环境添加第三方模块