关于int类型数据在内存中的高低位存储问题
2018-04-01 20:32
495 查看
最近在给学生讲课的时候,学生问到,对于一个c语言编写的程序,一个int类型的数据,在内存中是如何存储的。例如:int类型的1在内存中占用4个字节,那这4个字节具体怎么存储呢?目前市面上大部分书籍说的都是数字的字节表示形式,按照二进制的方式进行存储。学生就理所当然的认为是按照下面方式进行存储的。第1字节 第2字节 第3字节 第4字节00000000 00000000 00000000 00000001但是我告诉他们实际上并不是这样存储的,而是低位在前,高位在后的方式存储的,也就是按照下面的方式第1字节 第2字节 第3字节 第4字节00000001 00000000 00000000 00000000学生们就觉得有点不太好理解,于是就写了一段小程序来检验一下,看看是否是我说的这种方式进行存储。
[cpp] view plain copy#include <stdio.h>
int main(){
int i = 1;
unsigned char * p = (unsigned char *)(&i);
printf("第1字节:%d,第2字节:%d,第3字节:%d,第4字节:%d\n",*p,*(p+1),*(p+2),*(p+3));
}
于是他们按照我的这个思路,对所有的基本数据类型都做了一个检测,并且对结构体等复杂类型的内存存储方式都做了一个检验,对数据类型在内存中的存储方式的理解又深入了一步。
[cpp] view plain copy#include <stdio.h>
int main(){
int i = 1;
unsigned char * p = (unsigned char *)(&i);
printf("第1字节:%d,第2字节:%d,第3字节:%d,第4字节:%d\n",*p,*(p+1),*(p+2),*(p+3));
}
于是他们按照我的这个思路,对所有的基本数据类型都做了一个检测,并且对结构体等复杂类型的内存存储方式都做了一个检验,对数据类型在内存中的存储方式的理解又深入了一步。
相关文章推荐
- 关于int类型数据在内存中的高低位存储问题
- 关于常用数据内存占用的常见问题(数据类型所占内存容量、大端小端、结构体联合体)
- C 语言编译过程 C语言中各种数据存储的不同内存区域 关于sizeof 结构体比实际的大的问题
- 关于计算机中数据类型存储的对齐问题
- 关于sql条件语句where id in (@参数)执行报错问题(转换成数据类型 int 时失败)(
- 关于java基础类型与引用类型内存存储问题,以及string.intern()方法(String两种创建方式的区别)
- 关于统一存储多种子类型对象到定长共享内存的问题
- C学习笔记2-int类型数据在内存中的存储形式
- 关于int类型的数据的几个问题
- 关于数据类型的一个小问题 (int) (int &) (int ) &
- 从Excel中读取数据,关于一列数据包含多种数据类型的问题
- 关于struct和union存储的内存字节对齐的问题
- 关于计算机的数据内存问题的一点小探讨
- Linux下C/C++程序内存布局 各种类型数据存储区域及生长方向
- (转)关于数据类型转换的有趣问题
- 关于boost中数据类型转化问题
- char, signed char,unsigned char, short int unsigned short int, int数据类型取值问题
- 关于XML数据存储时遇到的字符编码的一个怪问题
- ms sql到mysql的移植:关于数据类型移植的一些问题
- 关于C#数据类型之间转换的问题