【笔记】深入理解计算机系统 02 - 信息的表示和处理
说明: 为了方便定位笔记对应的原书位置,笔记内容中段落的标号与原书章节号保持一致!
2.1.5 表示代码
打印对象的字节表示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| #include <stdio.h>
typedef unsigned char *byte_pointer;
void show_bytes(byte_pointer start, size_t len) { size_t i; for (size_t i = 0; i < len; i++) { printf(" %.2x", start[i]); } printf("\n"); }
void show_int(int x) { show_bytes((byte_pointer)&x, sizeof(int)); }
void show_float(int x) { show_bytes((byte_pointer)&x, sizeof(float)); }
void show_pointer(void *x) { show_bytes((byte_pointer)&x, sizeof(void *)); }
int main(){ show_int(0x654321); show_float(0x654321); float *a, *b; show_pointer(a); show_pointer(b); }
|
输出:
1 2 3 4
| 21 43 65 00 21 43 65 00 d0 99 27 87 ff 7f 00 00 00 00 00 00 00 00 00 00
|
说明我的机器是小端表示。