c\c++ 复习基础要点07---内存存储 大端模式、小端模式
2013-09-29 00:24
351 查看
首先不管大端法还是小端法存储,计算机在内存存放数据的顺序都是从低地址到高地址。
所不同的是首先取低字节的数据存放在低地址还是取高字节数据存放在低地址。
若首先取高字节的数据放在低地址,则是大端法;
若首先取低字节的数据存放在低地址,则是小端;
例如数据0x1234567 (左边是高字节,右边是低字节)
大端法存放:
内存地址依次为: 0x0001 0x0002 0x0003 0x0004
对应的数据存放依次为: 0x01 0x23 0x45 0x67
小端法存放:
内存地址依次为: 0x0001 0x0002 0x0003 0x0004
对应的数据存放依次为:0x67 0x45 0x23 0x01
union型数据所占的空间等于其最大的成员所占的空间。对union型的成员的存取都是
相对于该联合体基地址的偏移量为 0处开始,也就是联合体的访问不论对哪个变量的存取都
是从 union的首地址位置开始,因此,大小端模式存储将会直接影响union内成员的值。
例子:
#include<stdio.h>
union check
{
int i;
char ch;
};
void main()
{
check c;
c.i=1;
printf(“%d\n”,c.ch);
}
如果存储为大端模式,则输出为0,如果为小端模式,则输出为1
所不同的是首先取低字节的数据存放在低地址还是取高字节数据存放在低地址。
若首先取高字节的数据放在低地址,则是大端法;
若首先取低字节的数据存放在低地址,则是小端;
例如数据0x1234567 (左边是高字节,右边是低字节)
大端法存放:
内存地址依次为: 0x0001 0x0002 0x0003 0x0004
对应的数据存放依次为: 0x01 0x23 0x45 0x67
小端法存放:
内存地址依次为: 0x0001 0x0002 0x0003 0x0004
对应的数据存放依次为:0x67 0x45 0x23 0x01
union型数据所占的空间等于其最大的成员所占的空间。对union型的成员的存取都是
相对于该联合体基地址的偏移量为 0处开始,也就是联合体的访问不论对哪个变量的存取都
是从 union的首地址位置开始,因此,大小端模式存储将会直接影响union内成员的值。
例子:
#include<stdio.h>
union check
{
int i;
char ch;
};
void main()
{
check c;
c.i=1;
printf(“%d\n”,c.ch);
}
如果存储为大端模式,则输出为0,如果为小端模式,则输出为1
相关文章推荐
- 数据在内存中存储的方式:大端模式与小端模式
- 数据在内存中存储的方式:大端模式与小端模式
- c\c++ 复习基础要点04 C与C++程序的内存结构的不同
- 数据在内存中存储的方式:大端模式与小端模式
- 大端模式Big Endian和小端模式Little Endian以及浮点数在内存中的存储
- 【C/C++开发】内存对齐(内存中的数据对齐)、大端模式及小端模式
- c\c++复习基础要点08--c++单例模式
- 大端与小端存储模式详解
- 大端与小端存储模式详解
- 大端与小端存储模式详解
- 内存对齐(内存中的数据对齐)、大端模式及小端模式
- 推断CPU 是小端存储(Little endian)还是大端存储(Big endian)模式
- c++复习基础要点02 虚函数与模板 与static inline是否共存
- 大端模式和小端模式以及程序运行内存空间分布
- c\c++复习基础要点09---关键字explicit c++四种类型转换
- 大端与小端存储模式详解
- 【总结】大端、小端存储模式的那点事
- 大端与小端存储模式详解
- C语言判断数据存储时大端模式还是小端模式
- 大端与小端存储模式详解