关于int类型数据在内存中的高低位存储问题
2015-07-29 10:14
483 查看
最近在给学生讲课的时候,学生问到,对于一个c语言编写的程序,一个int类型的数据,在内存中是如何存储的。
例如:int类型的1在内存中占用4个字节,那这4个字节具体怎么存储呢?
目前市面上大部分书籍说的都是数字的字节表示形式,按照二进制的方式进行存储。学生就理所当然的认为是按照下面方式进行存储的。
第1字节 第2字节 第3字节 第4字节
00000000 00000000 00000000 00000001
但是我告诉他们实际上并不是这样存储的,而是低位在前,高位在后的方式存储的,也就是按照下面的方式
第1字节 第2字节 第3字节 第4字节
00000001 00000000 00000000 00000000
学生们就觉得有点不太好理解,于是就写了一段小程序来检验一下,看看是否是我说的这种方式进行存储。
于是他们按照我的这个思路,对所有的基本数据类型都做了一个检测,并且对结构体等复杂类型的内存存储方式都做了一个检验,对数据类型在内存中的存储方式的理解又深入了一步。
例如:int类型的1在内存中占用4个字节,那这4个字节具体怎么存储呢?
目前市面上大部分书籍说的都是数字的字节表示形式,按照二进制的方式进行存储。学生就理所当然的认为是按照下面方式进行存储的。
第1字节 第2字节 第3字节 第4字节
00000000 00000000 00000000 00000001
但是我告诉他们实际上并不是这样存储的,而是低位在前,高位在后的方式存储的,也就是按照下面的方式
第1字节 第2字节 第3字节 第4字节
00000001 00000000 00000000 00000000
学生们就觉得有点不太好理解,于是就写了一段小程序来检验一下,看看是否是我说的这种方式进行存储。
#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)); }
于是他们按照我的这个思路,对所有的基本数据类型都做了一个检测,并且对结构体等复杂类型的内存存储方式都做了一个检验,对数据类型在内存中的存储方式的理解又深入了一步。
相关文章推荐
- docker容器中安装vim
- UICollectionView中关于DecorationView的使用
- Zernike矩
- LeetCode231:Power of Two
- java归并排序
- Java通过JsApi方式实现微信支付
- Powershell脚本设置SharePoint自动更新托管账户密码
- NYOJ 45 棋盘覆盖(规律+大数+打表)
- HDU 1963 Investment 最大利息
- 基于网络爬虫的全国气温排行程序/c++
- hdoj-1753-大明A+B(大数)
- 程序员接私单需要注意的几大问题
- 畅通工程续
- CListBox
- 7月第4周全球域名商(国际域名)新增注册量TOP15
- 嗯,严格意义上来说 Windows 10 已经正式发布一个小时了
- 棋盘型动态规划
- Metasploit数据库问题汇总
- JS按回车键实现登录的方法
- Android SharedPreferences Api