| 概念 | 含義 | 100 (十進制) 示例 |
|---|---|---|
| ASCII 碼存儲 | 將數字作為**字符串**存儲,每個字符佔 1 字節 | '1' '0' '0' → `0x31 0x30 0x30` (3 字節) |
| 二進制補碼存儲 | 數值在 CPU 寄存器/內存中的**真實二進制位模式** (補碼表示) | `0x00000064` (32位 int, 大端) / `0x64 0x00 0x00 0x00` (小端) |
| 內存存儲 (字節序) | 多字節類型在內存中**按地址順序排列的字節序列** (大端/小端) | 小端機 (x86/ARM): 低位字節低地址 → `64 00 00 00` |
假設 16 位系統 `short` 佔 2 字節,數值 100:
#include
#include
void print_bytes(const void *ptr, size_t size) {
const unsigned char *p = (const unsigned char*)ptr;
for (size_t i = 0; i < size; i++) {
printf("%02X ", p[i]);
}
printf("\n");
}
int main() {
int16_t val = 100; // 0x0064
printf("邏輯補碼 (大端視圖): 0x%04X\n", val);
printf("內存字節序 (小端機): ");
print_bytes(&val, sizeof(val)); // 輸出: 64 00
// 對比 ASCII
char str[] = "100";
printf("ASCII 碼: ");
print_bytes(str, 3); // 輸出: 31 30 30
return 0;
}