信息的表示与处理
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); }
|
这段代码在不同的大小端读取的机器中打印出来的值不一样