信息的储存
大多计算机使用8位的块(字节)作为最小的可寻址的储存器单位。每个字节都对应一个整数即它的地址,通常是以16进制表示。
为什么选择16进制?
因为2进制表示起来太过于冗长且容易出错,故使用16进制。并且16进制和2进制之间的转换很方便。
2进制与16进制之间的转换
2进制 | 16进制 |
---|---|
0000 | 0x0 |
0001 | 0x1 |
0010 | 0x2 |
0011 | 0x3 |
0100 | 0x4 |
0101 | 0x5 |
0110 | 0x6 |
0111 | 0x7 |
1000 | 0x8 |
1001 | 0x9 |
1010 | 0xA |
1011 | 0xB |
1100 | 0xC |
1101 | 0xD |
1110 | 0xE |
1111 | 0xF |
16进制向2进制转换,直接将每个16进制数字替换成对应的2进制数字即可。
例如0x7A转换成2进制就是 01111010,把前导零省略就是1111010
2进制向16进制转换,要用前导零把2进制的01序列长度补充至4的倍数,然后每4个2进制数字替换成16进制数字。
例如11011转换成16进制。 第一步补前导零,11011长度为5,补充三个前导零:0001 1011,转换成16进制就是0x1B
C语言中一个整数或者一个结构体的地址就是其所占字节序列中第一个(地址最小)字节的地址。
如果一个int整数占4个字节,那这个int的地址就是第一个字节的地址。
字长
每个机器都有一个字长,指明指针的标称大小。字长为32位的机器虚拟空间就是4GB。
大端与小端
假设一个int的值为0x01234567
,01,23,45,67
一共四个字节,他们在内存里是怎么排列的呢?
小端也就是我们平常所用的Intel芯片的电脑是这样排列的:低位在低地址,高位在高地址。
而大端正好相反。