在学习C/C++编程语言时,免不了和内存打交道,在计算机中,我们存储有电影,文档,音乐等数据,这些数据在内存中是以什么形式存储的呢?下面做一下简单介绍。

本文是学习VIPler的博文关于内存地址和内存空间的理解之后整理的,感谢VIPler提供学习资源。

1 内存地址

  我们经常在书上或者网络上看到4位和8位的内存地址表示方法,比如0x0001或者0x00000001,为什么会有这两种区别呢?

  其实,这两种表示方法都是表示的编号为1的内存地址,都只是一个地址编号,指向(或者说)一个1字节的内存空间。

  注意一点:

计算机存储器的内存是以字节为基本单位,也即一个地址代表1个字节(8bit)的存储空间。

  比如如下表示:

[0x0000]------>[8bit空间]
[0x0001]------>[8bit空间]
[0x0002]------>[8bit空间]
[0x0003]------>[8bit空间]
或者
[0x00000000]------>[8bit空间]
[0x00000001]------>[8bit空间]
[0x00000002]------>[8bit空间]
[0x00000003]------>[8bit空间]

  至于为什么会出现4位16进制地址0x0001和8位16进制地址0x00000001,是因为硬件所支持的寻址空间不同,有些CPU只能寻址16位(16根地址线),所以用4位十六进制表示地址就够用了。有些CPU只能寻址32位(32根地址线),所以用8位十六进制。

2 内存空间

  在计算机数据存储中,无论是代码还是数据,都会存储在硬盘中,掉电不会丢失。硬盘容量大,但是数据传输速度较慢,与CPU的运行速度不匹配,所以在运行程序或打开数据时,首先会把数据从硬盘等存储器上拷贝到数据传输速率较快的存储器上,然后再送到CPU进行处理,这个中间存储器就是内存。

(这就是为什么电脑开的进程多了,会卡,我们会想到换一个大一点的内存条。再卡就换固态硬盘。)

  内存也是一种存储器,也会有地址,这个地址就相当于家里的门牌号。

计算机把存储在存储器上的所有信息都数字化了,因为在计算机存储中都是0和1的二进制。

  下面通过两个例子进行说明:

(1) 存储汉字 “丁”,如下图:

  汉字在存储中占两个字节。计算机记住“丁”字的内存地址是0x1000(1000H)。其他的汉字也是类似的存储。

  第一行,是汉字本身,给人看的,

  第二行,是计算机在存储器中存储“丁”字的真正存储内容,0001001001110101在计算机中就代表“丁”字

  第三行,是“丁”字在计算机中的内存地址

  对于上面可以这样理解,内存地址相当于一个门牌号。一个门牌号对应的家里有卧室,厨房,卫生间,客厅等不同房间,这些就相当于一个内存地址对应的8bit内存空间。

  只有门牌号有编号,一家一个,家里的卧室等房间是没有编号的(也即没有内存地址)。

  翻译过来就是:一个内存地址对应一小块内存,这块内存存储8bit数据。

(2)汉字占两个字节,英文字母和阿拉伯数字占一个字节,以"A"为例

  理解方法与“丁”字类似。

  总结内存地址是内存中存储数据的一个标识,并不是数据本身,通过内存地址可以访问到对应内存中存储的数据。

C/C++数据在内存中的存储方式的更多相关文章

  1. 数据在内存中的存储方式( Big Endian和Little Endian的区别 )(x86系列则采用little endian方式存储数据)

    https://www.cnblogs.com/renyuan/archive/2013/05/26/3099766.html 1.故事的起源 “endian”这个词出自<格列佛游记>.小 ...

  2. C语言 float、double数据在内存中的存储方式

    float在内存中占4个字节(32bit),32bit=符号位(1bit)+指数位(8bit)+底数位(23bit) 指数部分 指数位占8bit,可以表示数值的范围是0-(表示0~255一共256个数 ...

  3. C语言之数据在内存中的存储

    C语言之数据在内存中的存储 在我们学习此之前,我们先来回忆一下C语言中都有哪些数据类型呢? 首先我们来看看C语言中的基本的内置类型: char //字符数据类型 short //短整型 int //整 ...

  4. <转载>浅谈C/C++的浮点数在内存中的存储方式

    C/C++浮点数在内存中的存储方式 任何数据在内存中都是以二进制的形式存储的,例如一个short型数据1156,其二进制表示形式为00000100 10000100.则在Intel CPU架构的系统中 ...

  5. C语言中浮点数在内存中的存储方式

    关于多字节数据类型在内存中的存储问题 //////////////////////////////////////////////////////////////// int ,short 各自是4. ...

  6. QList介绍(QList比QVector更快,这是由它们在内存中的存储方式决定的。QStringList是在QList的基础上针对字符串提供额外的函数。at()操作比操作符[]更快,因为它不需要深度复制)非常实用

    FROM:http://apps.hi.baidu.com/share/detail/33517814 今天做项目时,需要用到QList来存储一组点.为此,我对QList类的说明进行了如下翻译. QL ...

  7. Float在内存中的存储方式及IEC61131处理

    Float在内存中的存储方式及IEC61131处理 1,fp32(32bits float)类型数据在存储器中占用4Bytes存储,且遵循IEEE-754标准: 一个浮点数分三部分组成: 符号位s(1 ...

  8. float数据在内存中的存储方法

    浮点型变量在计算机内存中占用4字节(Byte),即32-bit.遵循IEEE-754格式标准.一个浮点数由2部分组成:底数m 和 指数e.                          ±mant ...

  9. JavaScript 之 数据在内存中的存储和引用

    栈和堆 大家都知道,JS中的数据类型包括两种:简单数据类型(String.Number.Boolean.undefined.null)和复杂数据类型(object). 在内存中分为栈区(stack)和 ...

随机推荐

  1. Windows下安装Redis客户端

    Redis是有名的NoSql数据库,一般Linux都会默认支持.但在Windows环境中,可能需要手动安装设置才能有效使用.这里就简单介绍一下Windows下Redis服务的安装方法,希望能够帮到你. ...

  2. Django DetailView 多重继承 关系整理

    0.参考 https://docs.djangoproject.com/en/2.1/topics/class-based-views/mixins/ 1.版本信息 In [157]: import ...

  3. CentOS7使用yum安装配置Redis

    >>>>>>>>>>>>>>>>>>>>>>>>> ...

  4. OrchardCore 如何实现模块化( Modular )和 Multi-Tenancy

    一.概述 通常我们会在 Startup 类通过 void ConfigureServices(IServiceCollection services) 配置应用的服务.常见的形如 AddXXX 的方法 ...

  5. 洛谷 p2196 挖地雷 题解

    好久没有写博客了,今天水几篇博客 传送门 挖地雷这个题之前在  信息学奥赛一本通  上做过几乎一样的题,但是由于数据太水导致我当时过了,进而导致我昨天(4.28)考试丢了20分,今天写一篇题解 这个挖 ...

  6. Manacher算法 (马拉车算法)

    #include<iostream> #include<string.h> #include<algorithm> using namespace std; ]; ...

  7. xxl-job调度中心配置以及常见错误

    项目结构图 启动步骤: 1.检查 /xxl-job/xxl-job-admin/src/main/resources/xxl-job-admin.properties 下的JDBC链接.登录账号. 2 ...

  8. ARP欺骗配置及演示过程

    目录 环境 软件 网络拓扑图 配置流程 配置构思 具体流程 问题 演示过程 状态 检查Attack前centOS7_1的ARP地址表 在kali上输入以下命令发动攻击 此时查看centOS7_1的AR ...

  9. android studio gradle 打jar 包 (混淆+第三方库包)

    将依赖的第三方库打包进自己的jar包 1.先将第三方的库包拿到,然后添加jar包到项目的libs. 2.项目的build.gradle脚本添加下面的task: task buildJar(depend ...

  10. Docker安装ngnix使用ping报错

    最近在学习docker时,由于docker维护的dockerHub远程仓库的镜像文件比普通的文件小得多,所以经常碰到的情况是,一般常用的命令,会出现no command的情况.今天安装ping的时候就 ...