内存解释实验台
数字只是数据;位宽和类型才决定它的含义。
同一组 32 位,可以读成无符号整数、有符号补码、四个有顺序的字节,也可以解释为 IEEE 754 浮点数。先确定格式约定,再相信屏幕上的数值。
十进制
3,735,928,559
十六进制
0xDEADBEEF
二进制 · 32 位
1101 1110 1010 1101 1011 1110 1110 1111
字节
DE AD BE EF
01 · 先定宽度,再谈含义
同一组位模式,两种整数读法
无符号
3,735,928,559
有符号 · 二进制补码
−559,038,737
符号位
第 31 位 · 为 1
无符号最大值
4,294,967,295
选择更小的位宽可能截掉高位。DevSexy 会明确标出输入是否超出当前位宽,而不是悄悄把截断后的值当作原值。
02 · 按内存地址查看字节
大小端改变字节顺序,不会反转单个字节内部的 bit。
03 · IEEE 754 单精度结构
把同一组 32 位重新解释为浮点数
S
1
指数
10111101
尾数
10110101101111011101111
- 分类
- 正规数
- 无偏指数
- 62
- 有效数
- 1.fraction
- 数值
- ≈ −6.2599 × 10¹⁸
04 · 常见数据读取顺序
从格式约定开始,不要从“看起来合理”的结果倒推。
定位字段字节 → 确认协议位宽 → 应用规定的字节序 → 再选择有符号或无符号
按地址递增顺序复制字节 → 选择 C 类型位宽 → 对照逻辑值和内存布局
分别确认寄存器顺序与字节顺序;32 位设备还可能使用混合 word 顺序
准确读取 4 或 8 字节 → 应用传输字节序 → 解析 IEEE 754 → 检查特殊分类