💾 内存阵列详解

一个格子多大?地址怎么算?里面存的都是什么?彻底讲清楚

内存的基本单位
内存的最小可寻址单位是 字节(Byte)1 Byte = 8 bit。 也就是说,内存中的每个格子(每个地址)存储 1 个字节,包含 8 个二进制位(0 或 1)。

📦 存储单位换算

1 Byte = 8 bit
1 KB = 1024 Bytes
1 MB = 1024 KB
1 GB = 1024 MB
1 TB = 1024 GB

🎯 地址是什么?

地址就是每个格子的"门牌号"。
32位系统最多有 2³² = 4,294,967,296 个地址
= 4GB 内存空间
每个地址对应 1 Byte

🔢 一个字节能存什么?

• 一个 ASCII 字符(如 'A')
• 一个 0-255 的整数
• 8 个布尔值(true/false)
• 指令的一部分(如 MOV 操作码)

一个字节(Byte)的内部 — 8 个 bit
点击下面的 8 个 bit,看看不同的二进制值对应什么十进制数和字符。
内存里实际存的是什么?
内存是"通用"的,它不关心内容是什么,只负责存储二进制数据。 但站在程序的角度看,同一块内存可以存放不同类型的数据:

🔧 机器指令(代码段)

MOV ADD SUB JMP
这些是 CPU 能直接执行的二进制指令。
比如 MOV EAX, EBX 会被编译成若干字节。
程序运行时,CPU 从内存取出这些指令并执行。

📊 数据(变量、常量)

0x3F 1024 0xA5
程序中的变量值、数组元素、结构体字段。
比如 int x = 100; 会把 100 存入某地址。
数据可以被读取、修改、传递。

🏷️ 标识符/符号(调试信息)

R0 R1 FLG PTR
这些是程序员/调试器用的符号名。
实际运行时内存里存的是二进制值,
但可视化时我们用这些标签帮助理解。

📍 内存区域标记

HEAP STK CODE DATA
表示这块内存的用途:
• HEAP = 堆(动态分配)
• STK = 栈(局部变量)
• CODE = 代码段
• DATA = 数据段

🔤 类型标记

INT CHR FLT STR
表示数据的类型:
• INT = 整数
• CHR = 字符
• FLT = 浮点数
• STR = 字符串

⚡ 状态/控制值

NUL EOF ERR OK
特殊的控制值或状态码:
• NUL = 空指针/空字符
• EOF = 文件结束
• ERR = 错误状态
• OK = 成功状态

不同类型的数据在内存中的样子
不同类型的数据占用不同数量的字节。点击按钮查看各种数据类型在内存中的存储方式。
内存阵列 — 每个格子 = 1 Byte
现在你应该明白了:内存阵列的每个小格子代表 1 个字节(8 bit)。 点击任意格子,查看它的地址、二进制值、以及可能代表的含义。
地址是怎么算出来的?
内存地址从 0 开始递增。在 8×8 的阵列中,地址 = 行号 × 8 + 列号。 实际计算机中,地址计算更复杂,涉及 Bank、Row、Column 等多级解码。
📝 核心要点总结

1. 基本单位:内存最小可寻址单位是 1 Byte(字节) = 8 bit
2. 地址含义:每个地址对应一个 Byte,地址从 0 开始连续编号
3. 存储内容:内存是通用的,可以存指令、数据、指针、字符串等任何二进制信息
4. 多字节数据:int(4字节)、float(4字节)、double(8字节)等需要占用连续多个地址
5. 类型是概念:内存本身不知道类型,类型是程序/CPU解释数据的方式