高地址和低地址、高字节低字节、大小端模式的转换,存储顺序
参考博客
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字节等问题。
总的来说,具体的地址,需要考虑“栈的高地址到低地址”、“字节对齐”、“数组”这样的特殊情况等等。
高地址和低地址、高字节低字节、大小端模式的转换,存储顺序相关推荐
- 高地址和低地址、高字节低字节、大小端模式(及如何互换),存储顺序(!!)
参考博客 https://blog.csdn.net/ce123_zhouwei/article/details/6971544 https://my.oschina.net/alphajay/blo ...
- 大小端模式 字节序
大.小端模式的说法,来自乔纳森·斯威夫特的小说<格列夫游记>,在小人国内部分裂成 Big-endian 和 Little-endian 两派,他们的争论在于一派要求从鸡蛋的大头把鸡蛋打破, ...
- 通俗易懂说字节序,大小端,网络序和主机序
通俗易懂说字节序,大小端,网络序和主机序 1. 什么是字节序 1.1 为什么字符串不用转序 2. 什么是网络字节序 3. 什么是主机字节序 3.1 主机字节序 3.2 大小端字节序 4. 举例 4.1 ...
- 通俗易懂说字节序,大小端,网络序和主机序(2)htonl和ntohl 源码实现
通俗易懂说字节序,大小端,网络序和主机序(2)htonl和ntohl 源码实现 1. htonl 内核源码实现 1.1 注意:这里有判断,如果本身内存中存储的就是网络序,那就不转 1.1 __bswa ...
- 理解字节序(大小端)
>字节序 在网络传输的协议和数据报中,常常遇到字节序的概念,也就是大端字节序(big endian)和小端字节序(little endian),这是计算机的两种存储数据的方式: 大端字节序:高位 ...
- Java字节序与大小端转换_什么时候要进行大小端字节序的转换? | 学步园
什么时候要进行大小端字节序的转换? 通过socket收发数据(在intel的处理器上), 什么时候要进行大小端字节序的转换? 比如发一个int型的数据出去,要不要进行转换? 还是两端一样,就不用考虑转 ...
- IP地址转换、主机大小端、htonl、ntohl实现
http://blog.csdn.net/zww0815/article/details/7592940 #include <IOSTREAM> //#include <WINSOC ...
- 大端模式、小端模式、高字节序、低字节序、MSB、LSB
摘要:你知道内存是怎么读取数据的吗?知道数据是怎么一个一个字节发送的吗?是低字节先发还是高字节先发?是bit0先发还是bit7先发?是从低地址开始读还是从高地址开始读?看完本篇比应该就明白了~ 内存的 ...
- 大小端字节序介绍以及判断当前环境字节序的程序【C语言】
文章目录 1.大小端字节序介绍 2. 判断当前环境的字节序程序 1.大小端字节序介绍 首先我们先来介绍什么是大端字节序,什么是小端字节序: 大小端字节序指的是数据在电脑上存储的字节顺序 小端字节序存储 ...
最新文章
- 水晶报表导出数据并实现打印
- c++宏定义常量为什么使用移位_干货 | C语言系列3——常量,运算符,常用数学函数.........
- mysql 5.7.11 my.ini,mysql5.7以上版本配置my.ini的详细步骤
- Oracle的SQL基础之用户与表空间
- Delphi 的消息机制浅探二
- Mediawiki安装经验分享
- android 手势高度,克制的 Android 手势插件:滑动 Home 键
- 【编程题】【Scratch四级】2021.03 程序优化
- HDU-6555 The Fool
- python量化策略——Fama-French三因子模型(回归获取alpha)阿尔法α策略。
- 使用qq 、微信和新浪微博三种方式登录demo
- 三原色亮度最高_色彩搭配三原色
- 太极拳经验谈 --- 董英杰
- VSCode+Marp:用Markdown做幻灯片-宋森安(基础篇)
- 图像相似算法最全总结
- 东北师范大学计算机学院的导师李俊,东北师范大学计算机科学与信息技术学院研究生导师简介-殷明浩...
- 恒驰冬测 恒大汽车迎性能大考
- 1024分辨率《源代码》HD中英双字无水印
- 【干货】关于电商售后(退货、退款、换货)的相关流程
- matlab的自定义常数是a,Simulink仿真入门到精通(二) Simulink模块