記憶體數值解讀工作區
數字只是資料;位元寬度與型別才賦予它意義。
同一組 32 bits 可以讀成無號整數、二補數負數、四個依地址排列的位元組,或 IEEE 754 浮點數。先確認格式契約,再判斷畫面上的數值。
十進位
3,735,928,559
十六進位
0xDEADBEEF
二進位 · 32 bits
1101 1110 1010 1101 1011 1110 1110 1111
位元組
DE AD BE EF
01 · 先決定位元寬度
同一組位元樣式,兩種整數解讀
無號整數
3,735,928,559
有號二補數
−559,038,737
符號位元
第 31 bit · 為 1
無號最大值
4,294,967,295
選擇較小寬度可能捨棄高位元。DevSexy 會標示輸入超出目前有號或無號範圍,再以 modulo 2ⁿ 顯示保留下來的低位元,不會把截斷結果冒充原值。
02 · 依記憶體地址查看位元組
Endianness 只重排位元組,不會反轉單一位元組內的 bits。
03 · IEEE 754 binary32 欄位
把同一組 32 bits 重新解讀為浮點數
S
1
Exponent
10111101
Fraction
10110101101111011101111
- 分類
- 正規數
- 未偏移指數
- 62
- 有效數
- 1.fraction
- 數值
- ≈ −6.2599 × 10¹⁸
04 · 常見資料讀取順序
從格式契約開始,不要從「看起來合理」的結果倒推。
定位欄位位元組 → 查明協定寬度 → 確認位元組順序 → 再解讀有號或無號
依地址遞增複製位元組 → 選擇程式型別寬度 → 對照邏輯值與記憶體排列
分別確認 register 順序與位元組順序;本工具不處理混合 word swap
先按來源契約整理成邏輯 bit pattern → 選擇 32 或 64 bits → 解讀 IEEE 754 → 檢查特殊分類