【笔记】深入理解计算机系统 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

说明我的机器是小端表示。