此文先讲int数据的存储(大小端)问题,然后简单讲一下二进制编辑器的使用,针对像我一样的初学者,懂了的大神可以直接关掉

直接说结论,大家都知道一个int数据是4字节,一个字节是8个比特位,也就是一个int类型占了4*8=32个比特位,这也就是int类型范围的由来。一个内存地址对应的空间就是一个字节,一个int数据会对应四块连续的内存空间,接下来用数字1来说明,要存储int类型数字1,那么在这32个比特位中只有一个是1,其余都是0。结论:这个1是存储在第一块内存空间里的,也就是说,这四块内存空间依次是

00000001  00000000  00000000  00000000

,这个1其实并不是在最后,(也就是数据高位存储在内存地址大的地方),同理256存储的方式是

00000000  00000001  00000000  00000000

,先理解这种存储方式就好了,后面会用二进制编辑器来验证。

我们先用代码来创建一个存有一个int数字的文件,代码如下:

#include<cstdio>int main() {int n = 1;FILE *f = fopen("test", "wb+");fwrite(&n, 4, 1, f);fclose(f);return 0;
}

(  这里是C++,C语言的话把第一行换成stdio.h应该就行了)这几个函数可以搜一下,此段代码的作用就是创建了一个名为test的文件,写入了一个int数字1。如果无法创建也可以往下看,不影响
此时会在工程目录下生成一个名为test的文件,此文件没有后缀名,可以右键看一下属性,是占用了4字节,刚好是一个int的大小,如果你用记事本打开,会看到不是一个正常的字符。这里代码写入的1实际是ascii码,如果代码用n=49,即可用记事本看到数字1。我们用n=1继续。接下来我们用二进制编辑器来打开它。

此处用vs2017自带的二进制编辑器,打开方式为“文件->打开->文件”,到了选择文件的窗口,选择刚才创建的test文件,可以看到打开按钮旁边有个三角箭头,点一下,如图(我这里的vs是英文),中文可能是“打开为”

打开方式选择二进制(我这里英文是Binary Editor,中文版自己看一下是哪个。。)

会看到如下图

先介绍一下,前面连续的8个0是地址,可以先简单地理解成行号,或者直接忽视掉也可以,然后后面是

01  00  00  00

这里第一个01就是对应前面所说的第一块内存空间,就是1存在int的第一个字节中,可是这里只看到了两位,不是应该有8位吗?实际上这里是以十六进制显示的,8个比特位就是2的8次方,刚好与这里的两个16进制,也就是16*16相等,估计没人想对着一堆0和1修改(我理解的也就是二进制编辑器用起来实际为十六进制编辑器...)。可以看到后面有四个点,这四个点对应的就是这四个字节所存储的数字ascii码所对应的字符,有点绕,因为这里目前只有0和1,ascii码对应的字符不能显示,只好显示了小点,也就是说,如果把第一个01改为十进制的49,右边的第一个点就可以显示出来字符‘1’,但是不要忘记这里是十六进制,所以应该把49换算成十六进制,也就是十六进制的31,修改好后如下图,右边顺利显示出来了‘1’:(修改有难度,多摸索几次找规律)

接下来尝试修改成下图所示:

这里对应的十进制数值应该是2的8次方也就是256,然后点击保存,此时test文件里存储的是int类型数字256,大小依然4字节,注意这里说是int类型是因为可以这样理解,并不是指文件里面存的就是一个int,文件里只不过是存了8*4=32个比特位而已,所以我们同样可以理解成存了4个char类型数据,或者两个short类型数据。如果把上面数据后面两个字节删掉,如下图所示:

此时可以看到只剩下了两个字节的数据(那个竖线是光标),右边的点也只变成了两个,此时保存,你会发现test文件大小变成了两字节。

最后额外说一点txt文件吧,新建一个空的txt文件,是0字节,打一个数字1,文件是1字节。在这里输入进去的实际是一个字符‘1’,对应的ascii码是49,用二进制编辑器打开这个文件,发现是下图,

十六进制的31对应的十进制刚好是49,ascii码刚好对应字符‘1’。

知道了这些之后可以很容易推广到其他数据类型。本来是不想写此文了的,这些东西应该也算基础,可是笔者也是今天才算彻底搞明白,犹豫了一下最后还是写了吧,能帮到人就算没白写。就这样,学习的时候时间总是过得特别快

理解int的存储方式以及二进制编辑器的使用相关推荐

  1. 理解int的存储方式以及VS二进制编辑器的使用

    此文先讲int数据的存储(大小端)问题,然后简单讲一下二进制编辑器的使用,针对像我一样的初学者,懂了的大神可以直接关掉 直接说结论,大家都知道一个int数据是4字节,一个字节是8个比特位,也就是一个i ...

  2. 结构体的传参理解成员的存储方式

    结构体的成员变量在内存中存储的方式,决定于设定的内存对齐方式是几字节:gcc编译默认使用4字节对齐: 1 #include <stdio.h> 2 3 typedef struct tes ...

  3. 数据在内存中的存储方式——数据类型、内存地址

    一.数据类型 首先必须得明白,在计算机中,任何文件.图片.视频等都是以二进制格式储存在储存介质中的一串编码,对于二进制数的每一位称作1bit(比特).这里必须得再说一下,byte(字节)和bit(比特 ...

  4. int、unsigned int、float、double 和 char 在内存中存储方式

    2017-12-28 创建人:Ruo_Xiao 实验环境:vs2010.Intel 邮箱:xclsoftware@163.com 2018-01-16 修改人:Ruo_Xiao添加对移位存储的说明. ...

  5. android锁屏密码文件夹,深入理解Android M 锁屏密码存储方式

    Android M 之前锁屏密码的存储 在 Android M 之前,锁屏密码的存储格式很简单,其使用了 64 位随机数作为 salt 值,此 salt 值被存储在 sqlite 数据库 /data/ ...

  6. C语言int类型和float浮点型数据在内存中的存储方式

    int 类型在内存中占4个字节,而一个字节是8个比特位,所以int类型占32个比特位. float类型在内存中同样也占4个字节,所以其也是占32个比特位. 一个比特位就是一个0或1,所以其在二进制位数 ...

  7. java修改手机锁屏密码,深入理解Android M 锁屏密码存储方式

    Android M 之前锁屏密码的存储 在 Android M 之前,锁屏密码的存储格式很简单,其使用了 64 位随机数作为 salt 值,此 salt 值被存储在 SQLite 数据库 /data/ ...

  8. 十进制浮点型数据转换成二进制,并在内存中的存储方式

    文章源地址:http://blog.csdn.net/wzy198852/article/details/9617239   原文章有些地方有误,已更正 十进制小数的二进制表示: 整数部分:除以2,取 ...

  9. 深入理解BMP图片数据存储方式

    说明: 以下这些是本人自己总结出来的,因为自己在图像数据的存储方面总是模糊不清,这样是不利于开发的,只有知道底层原理才能解决任何问题,通过下面的知识,你就可以触类旁通,解决bmp图片在lcd上的任意显 ...

  10. Redis简介、与memcached比较、存储方式、应用场景、生产经验教训、安全设置、key的建议、安装和常用数据类型介绍、ServiceStack.Redis使用(1)...

    1.NOSQL简介 nosql的产生并不是要彻底的代替关系型数据库,而是作为传统关系型数据库的一个补充. Facebook和360使用Cassandra来存储海量社交数据 Twitter在其url抓取 ...

最新文章

  1. 基于visual c++之windows核心编程代码分析(64)现有的exe文件中添加自己的代码
  2. 对服务器系统性能的诊断思路和方法,服务器端软件性能分析和诊断方法研究
  3. 二叉树的相关性质及其前中后层序遍历实现
  4. Python用@property使类方法像属性一样访问
  5. 30 ArcGIS 许可管理器常见问题(持续更新中……)
  6. 稀疏傅里叶变换(sparse FFT)
  7. C语言之反序数组和求最大值和最小值
  8. 又一大波机械动图来了,工作原理都能看明白!
  9. JAVA装mysql_已经安装了mysql,怎么能在java程序里使用SQL?
  10. VMware vSphere 5.1 群集深入解析(二十九)-故障排错
  11. 友基-绘影G10数位屏到底是个什么东西呢要不要拆了看看
  12. 利用计算机技术设计直流稳压电源,数字化控制在直流稳压电源中 - 稳压电源 - 电子发烧友网...
  13. Python数据分析(9)-numpy文件读写
  14. C 龟兔赛跑题目:T分钟后乌龟和兔子谁跑得快?
  15. 树莓派安装系统和系统备份还原
  16. android摄像头(camera)之buffer管理
  17. strongSwan之ipsec.secrets配置手册
  18. 第二章:EB编译环境Keil的配置(s32k144)
  19. 计算机基本单位——位、字节、字、字长
  20. IDE输入import语句自动消失

热门文章

  1. AlphaGo的深度学习系统Tensorflow详细安装入门
  2. 「架构师必备」java程序员面试宝典百度云
  3. STM32基于固件库学习笔记(7)I2C通讯协议时序(GPIO模拟协议时序完成MCU对24c02读写数据)
  4. 电子仿真软件MultiSIM
  5. 成人高考计算机专业,成人高考计算机类里的哪个专业好找工作?
  6. top 内存耗用:VSS/RSS/PSS/USS
  7. 第一至第七次人口普查县级人口普查GIS数据集(1953-2010)
  8. linux下xp镜像文件iso下载,Windows XP SP3简体中文专业版[官方MSDN正式原版ISO镜像]
  9. 用户计算机安装有512m内存,安装OFFICESCAN客户端(计算机内存要求512M以上)
  10. java定时任务插件_Spring 定时任务插件quartz