信息的表示与处理

1.字长

对于一个字长为 a 位的机器,虚拟地址的范围是2的 a 次方~0

32位最大的虚拟内存大于是4GB 64 位可达到16EB

数据大小

为确定固定大小 int 32_t 为4字节 int 64_t 为8八字节

2.寻址与字节顺序

大端法:最高有效字节在最前面的部分

小端法:最低有效字节在最前面的部分

例:小端法表示 ox01234567

机器里面的存储为 67 45 23 01

大部分Intel 兼容机为小端模式,IBM和Oracle 的机器为大端模式

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
#include<stdio.h>

typedef unsigned char* byte_pointer;

void show_bytes(byte_pointer start, size_t len) {
size_t i;
for (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(float x) {
show_bytes((byte_pointer)&x, sizeof(float));
}
void show_pointer(void *x) {
show_bytes((byte_pointer)&x, sizeof(void *));
}
int main(int val)
{
int ival = 12345;
float fval = (float)ival;
int* pval = &ival;
show_int(ival);
show_float(fval);
show_pointer(pval);
}

这段代码在不同的大小端读取的机器中打印出来的值不一样