当前位置: 首页 > news >正文

详解存储单位、内存寻址及数据存储方式

在计算机领域,存储单位、内存寻址能力以及数据存储方式是基础且重要的概念。本文将系统梳理存储单位体系,深入解析32位/64位系统的寻址能力,并介绍数据在内存中的存储形式。

 

一、存储单位体系

 

计算机中存储单位从最小到最大依次为:

 

- bit(位):最小的存储单位,只能表示0或1,是计算机数据的最小单位。

- B(字节):内存的基本单位,1字节=8位(1B=8bit),可表示一个字符(如字母、数字)。

- KB(千字节):1KB=1024B

- MB(兆字节):1MB=1024KB

- GB(吉字节):1GB=1024MB

- TB(太字节):1TB=1024GB

- PB(拍字节):1PB=1024TB

- EB(艾字节):1EB=1024PB

- ZB(泽字节):1ZB=1024EB

- YB(尧字节):1YB=1024ZB

 

这些单位均遵循1024进制递进,用于衡量不同规模的存储容量(如内存大小、硬盘空间等)。

 

二、内存与存储的物理载体

 

存储可分为临时存储(内存)和永久存储(外存),对应不同的物理载体:

 

1. 临时存储(内存)

 

- 物理载体:内存条、寄存器等

- 特性:断电后数据丢失,速度快,用于临时存放CPU正在处理的数据

- 类型:RAM(随机存取存储器),数据以二进制形式(如 01010110 )存储在内存地址中(如 0x01 、 0x02 等)

 

2. 永久存储(外存)

 

- 物理载体:硬盘、U盘、CD、磁带等

- 特性:断电后数据不丢失,速度较慢,用于长期保存数据

- 类型:ROM(只读存储器)及各类可读写存储设备

 

三、内存寻址能力解析

 

内存寻址能力由系统位数决定,指针作为指向内存地址的变量,其位数直接影响可访问的内存范围。

 

1. 32位系统(x86)

 

- 指针位数:32位,指针的二进制形式如  pointer = 10010101 10010101 10010101 10010101 

- 寻址原理:32位指针可表示的地址数量为2³²个(每个地址对应1字节)

- 计算过程:

2³²字节 = 4294967296字节 = 4GB(因为1GB=1024³字节,4294967296 ÷ 1024³ = 4)

- 实际限制:理论寻址能力为4GB,但由于系统需预留部分地址用于硬件映射,实际可用内存略小于4GB

 

2. 64位系统(x64)

 

- 指针位数:64位

- 寻址能力:2⁶⁴字节 = 2³⁴GB(远超当前实际需求,目前硬件暂未完全支持64位的理论上限)

 

3. 扩展:128位系统(理论)

 

- 理论寻址能力为2¹²⁸字节,可支持的存储容量极大,目前仅存在于理论研究中。

 

四、数据在内存中的存储形式

 

数据在内存中以二进制存储,且存在字节序(大小端)的差异。

 

1. 基本数据类型的存储

 

以 int 类型为例(通常占4字节):

定义 int a = 1 ,其二进制表示为 00000001 00000000 00000000 00000000 (4字节),在内存中存储为 01 00 00 00 (按字节拆分)。

 

2. 字节序(大小端存储)

 

- 小端存储(计算机常用):低位字节存于低地址,高位字节存于高地址。

如 int a=1 在内存中存储为 01 00 00 00 (低地址到高地址)。

- 大端存储(符合人类习惯):高位字节存于低地址,低位字节存于高地址。

如 int a=1 在内存中存储为 00 00 00 01 (低地址到高地址)。

 

总结

本文梳理了从bit到YB的存储单位体系,解析了32位系统4GB寻址能力的由来(2³²字节=4GB),并介绍了内存与外存的区别及数据存储的字节序问题。这些基础概念是理解计算机工作原理的关键,尤其在内存管理、数据处理等场景中应用广泛。

http://www.dtcms.com/a/267755.html

相关文章:

  • Feign调用报“请求方法POST不支持“错误
  • WPF学习笔记(25)MVVM框架与项目实例
  • 基于pcl点云库实现激光雷达数据采集
  • java整合itext pdf实现自定义PDF文件格式导出
  • 调参——optuna
  • Python 面向对象编程(OOP)全面详解:类、对象与 API
  • 【算法刷题记录(简单题)002】字符串字符匹配(java代码实现)
  • 线程池的七个参数设计源于对高并发场景下资源管理、系统稳定性与性能平衡的深刻洞察
  • Policy Gradient【强化学习的数学原理】
  • 【C语言刷题】第十一天:加量加餐继续,代码题训练,融会贯通IO模式
  • JMM--数据原子操作
  • Python asyncio库与GIL之间的关系,是否能够解决核心问题?
  • Spring--循环依赖以及三级缓存详解
  • Linux安装java后没法运行
  • 计算机组成原理《浮点数的存储》
  • Python基础之字典(Dictionary)全面指南
  • 南山科技园的步行
  • Qt项目锻炼——TODO清单(三)
  • 【论文笔记】OctoThinker:突破 Llama 推理瓶颈的中期训练范式
  • 乌邦图(20.04)添加中文拼音(中文输入法)
  • 实现电池储能装置的双向DCDC
  • Qt项目锻炼——TODO清单(二)
  • jmm--volatile
  • 前端面试专栏-算法篇:18. 查找算法(二分查找、哈希查找)
  • vue3 el-input el-select 非空校验
  • 大数据学习2:HIve
  • Linux进程管理:从基础到实战
  • Qt Ribbon效果界面
  • QT6 源(154)模型视图架构里的列表视图 QListView:先学习属性部分,
  • 认识Redis