1. 整数在内存中的存储原理
计算机系统中整数的存储方式看似简单,实则蕴含着精妙的设计。以32位整数为例,当我们声明一个int类型的变量时,系统会为其分配4个字节(32位)的连续内存空间。这个空间的大小是固定的,不会因为存储数值的大小而变化。
在VS2019开发环境中,假设我们定义如下代码:
c复制int num = 0x11223344;
这个十六进制数在内存中的实际存储方式取决于处理器采用的字节序(Endianness)。字节序分为两种主要类型:
1.1 小端存储模式(Little-Endian)
小端模式的特点是低位字节存储在低地址,高位字节存储在高地址。以0x11223344为例:
| 内存地址 | 存储内容 |
|---|---|
| 0x0000 | 0x44 |
| 0x0001 | 0x33 |
| 0x0002 | 0x22 |
| 0x0003 | 0x11 |
这种存储方式类似于我们书写数字时的习惯——先写个位,再写十位、百位。x86架构的处理器普遍采用小端模式。
1.2 大端存储模式(Big-Endian)
大端模式则正好相反,高位字节存储在低地址,低位字节存储在高地址:
| 内存地址 | 存储内容 |
|---|---|
| 0x0000 | 0x11 |
| 0x0001 | 0x22 |
| 0x0002 | 0x33 |
| 0x0003 | 0x44 |
这种存储方式类似于我们阅读数字的顺序——从左到右从高位到低位。网络协议(如TCP/IP)和某些RISC处理器(如PowerPC)采用大端模式。
注意:字节序只影响多字节数据在内存中的字节排列顺序,不会改变每个字节内部的位序。例如,字节0x11在任何情况下都是00010001。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 浮点数在内存中的存储规范
浮点数的存储远比整数复杂,它遵循IEEE 754标准(读作"I triple E 754")。这个标准由电气电子工程师协会制定,定义了浮点数的二进制表示方法。
2.1 IEEE 754标准的基本结构
以32位单精度浮点数为例,其内存布局分为三个部分:
- 符号位(Sign):1位,0表示正数,1表示负数
- 指数部分(Exponent):8位,采用偏移码表示(实际指数=存储值-127)
- 尾数部分(Mantissa):23位,隐含最高位1(即实际有24位精度)
