浅说数据类型占用的内存大小
2015-02-12 17:57
295 查看
看到有的资料说数据类型占用的内存大小跟操作系统有关,或者跟编译器有关,对于这方面,我也未研究的很深入,只说说我个人的理解
情景:修改某一游戏的玩家背包图鉴开启状态和宠物的三围
材料:安卓模拟器搭载Android 4.x的系统 ,内存修改器(烧饼或八门)
操作:使用烧饼修改器搜索 1920 的截图如上,可以看到1个DWBF就是一个int32 ,每个DBWF下有4个东西
分析:Android系统是32位,游戏的开发语言是C++,所以可知刚刚搜索的就是一个C++中的一个int,占四字节
下面再记录一下基础知识
机器码指令处理的单位,称作字长。大部分对字长的指令解译,主要以二进制为主,如一个 32 位的字长,可以表示从0至2的32次方减1的无符号整数值,或者表示从负的2的32次方至2的32次方减1的有符号整数值。存在着特殊的算术指令,对字长中的位使用不同的解释,以此作为浮点数。
数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。 例如大胖子必须睡双人床,就给他双人床,瘦的人单人床就够了。
最初的计算机性能和存储容量都比较差,所以普遍采用4位BCD编码(这个编码出现比计算机还早,最早是用在打孔卡上的)。BCD编码表示数字还可以,但表示字母或符号就很不好用,需要用多个编码来表示。后来又演变出6位的BCD编码(BCDIC),以及至今仍在广泛使用的7位ASCII编码。不过最终决定字节大小的,是大名鼎鼎的System/360。当时IBM为System/360设计了一套8位EBCDIC编码,涵盖了数字、大小写字母和大部分常用符号,同时又兼容广泛用于打孔卡的6位BCDIC编码。System/360很成功,也奠定了字符存储单位采用8位长度的基础,这就是1字节=8位的由来。
附:C#数据类型占用内存大小
情景:修改某一游戏的玩家背包图鉴开启状态和宠物的三围
材料:安卓模拟器搭载Android 4.x的系统 ,内存修改器(烧饼或八门)
操作:使用烧饼修改器搜索 1920 的截图如上,可以看到1个DWBF就是一个int32 ,每个DBWF下有4个东西
分析:Android系统是32位,游戏的开发语言是C++,所以可知刚刚搜索的就是一个C++中的一个int,占四字节
下面再记录一下基础知识
int32占4字节,每个字节占8位
计算机中,以位(0 或 1)表示数据。数据的最小的寻址单位称为字节(通常是八位)。机器码指令处理的单位,称作字长。大部分对字长的指令解译,主要以二进制为主,如一个 32 位的字长,可以表示从0至2的32次方减1的无符号整数值,或者表示从负的2的32次方至2的32次方减1的有符号整数值。存在着特殊的算术指令,对字长中的位使用不同的解释,以此作为浮点数。
数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。 例如大胖子必须睡双人床,就给他双人床,瘦的人单人床就够了。
为什么1字节等于八位?
首先说一下二进制,二进制只有两个数字构成,就是0和1,因为是逢二进一,所以称为二进制。在计算机中八个0和1可以表示一个英文字母,比如01001100,称为8位二进制数。我们将这样的8位二进制数称为一个字节,也就是说一个字节可以表示一个英文字母。
字节的由来
所谓字节,原意就是用来表示一个完整的字符的。最初的计算机性能和存储容量都比较差,所以普遍采用4位BCD编码(这个编码出现比计算机还早,最早是用在打孔卡上的)。BCD编码表示数字还可以,但表示字母或符号就很不好用,需要用多个编码来表示。后来又演变出6位的BCD编码(BCDIC),以及至今仍在广泛使用的7位ASCII编码。不过最终决定字节大小的,是大名鼎鼎的System/360。当时IBM为System/360设计了一套8位EBCDIC编码,涵盖了数字、大小写字母和大部分常用符号,同时又兼容广泛用于打孔卡的6位BCDIC编码。System/360很成功,也奠定了字符存储单位采用8位长度的基础,这就是1字节=8位的由来。
附:C#数据类型占用内存大小
相关文章推荐
- C/C++中不同数据类型所占用的内存大小
- python 基本数据类型占用内存空间大小的实例
- erlang 各种数据类型占用的内存大小
- JAVA基本数据类型占用内存大小
- c++拾遗之数据类型占用内存大小总结
- C/C++中不同数据类型所占用的内存大小
- python 基本数据类型占用内存空间大小
- Linux和windows 32位64位 数据类型的内存占用
- C++ 不同数据类型占据的内存空间大小
- C语言数据类型及内存占用
- java基础数据类型的内存占用
- C++ 基本语法之变量(指针)与数据类型(占用字节大小)
- java中堆与栈 java中数据占用内存空间的大小
- 关于常用数据内存占用的常见问题(数据类型所占内存容量、大端小端、结构体联合体)
- Java基本数据类型的【取值范围】【占内存大小】【默认值】
- 各数据类型占用的内存字节数、范围
- java常见类型内存占用大小
- C语言里的数据类型的大小及占用字节
- 不同数据类型变量在不同CPU或MCU下的内存占用情况还与编译器或编译选项有关
- 查看内核缓存TCP/UDP数据占用的内存大小