C学习笔记2-int类型数据在内存中的存储形式
2014-08-22 02:11
239 查看
我们都知道现在一般的int类型在VC中是占4个字节的,如果想亲自看到具体占多少个当然可以用sizeof(int)来查看,然而内存地址是以一个字节Byte作为单位的,也就是说一个int类型数据占据了4个内存单元,即跨越了4个地址空间。那么int类型数据在内存中是怎么存放的呢,我们一探究竟。
首先我们可以定义一个int类型变量,如:
int a=100000;
这个值够大,用十六进制表示就是000186A0,那么我们用看看a在内存中的情况,如图;
![](https://img-blog.csdn.net/20140822014831015?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2lja2VkbmVzc19hbmRyZXc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
其中左边是每一行的第一个内存单元的地址,我们用&a操作得知a的地址为0018ff30,那么a在内存中的数据就是A0860100,现在与上面的a对比一下,可以发现,其实内存中是以低地址存数据低位的方式存储数据的,
00 01 86 A0 --- A0 86 01 00
高位 低位 低地址 高地址
| | | |
| |
虽然只给出了int类型的例子,其实其他类型的数据也类似。这种排列方式就称之为小端(或者小尾),与之相对应的还有大端或者大尾。
a) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
b) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端
当然还有不那么常用的Middle-Endian方式。
首先我们可以定义一个int类型变量,如:
int a=100000;
这个值够大,用十六进制表示就是000186A0,那么我们用看看a在内存中的情况,如图;
其中左边是每一行的第一个内存单元的地址,我们用&a操作得知a的地址为0018ff30,那么a在内存中的数据就是A0860100,现在与上面的a对比一下,可以发现,其实内存中是以低地址存数据低位的方式存储数据的,
00 01 86 A0 --- A0 86 01 00
高位 低位 低地址 高地址
| | | |
| |
虽然只给出了int类型的例子,其实其他类型的数据也类似。这种排列方式就称之为小端(或者小尾),与之相对应的还有大端或者大尾。
a) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
b) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端
当然还有不那么常用的Middle-Endian方式。
相关文章推荐
- js数据类型,及内存存储学习笔记
- MySQL学习笔记之数据存储类型
- c语言学习笔记_数据格式_int与char的存储方式小节
- python学习笔记1-数据类型:int,str
- php学习笔记1——PHP数据类型,数据存储
- 学习笔记:char存储的十六进制数据和其它数据类型的转换
- MySQL学习笔记2---MySQL数据库的存储引擎和数据类型
- 在C语言中,基本类型数据在内存中的存储形式
- 学习笔记(C++中基础数据类型在内存的表现形式)
- MySql 基础学习笔记 1——概述与基本数据类型: 整型: 1)TINYINT 2)SMALLINT 3) MEDIUMINT 4)INT 5)BIGINT 主要是大小的差别 图 浮点型:命令
- 【数据库学习笔记】Oracle_01_sql*plus,存储结构,用户管理,常用数据类型
- 关于int类型数据在内存中的高低位存储问题
- MySql 基础学习笔记 1——概述与基本数据类型: 整型: 1)TINYINT 2)SMALLINT 3) MEDIUMINT 4)INT 5)BIGINT 主要是大小的区别 图 浮点型:命令
- 类型强制转换,数据内存存储形式
- 关于int类型数据在内存中的高低位存储问题
- FlashCS3学习笔记5-数据类型
- SilverLight学习笔记--本地(客户端)数据存储
- SQL Server 2005 T-SQL 学习笔记:新数据类型
- C#学习笔记: 数据类型的一些说明
- 【MFC学习笔记2】MFC中的数据类型,全局变量,全局函数和宏。