内存地址

一个内存地址=一个内存单元=一个字节

一个地址表示的是一个8bit空间
(不论这个地址有多少位,表示地址的位数和CPU的位有关:
CPU只能寻址16位(16根地址线),所以用4位十六进制表示地址,CPU只能寻址32位(32根地址线),所以用8位十六进制。一位十六进制表示四位二进制。)

内存大小

32/64位操作系统就是和CPU的位数有关,CPU的位数是指CPU一次性可以处理数据或指令的能力。例如8位的CPU,一次只能处理一个8位的数据或者一个8位的指令。

位的单位是bit,字节的单位是byte。1byte=8bit,1字节=8位。
地址总线的位宽决定了CPU的寻址能力有关。位宽就是位数、宽度。

因为计算机内部是以二进制表示的,所以,
32位(bit)处理器(cpu)的寻址能力最大为:
以字节为单位,找到一位也就找到了一字节,因为字节是最小单元
实际上就是2的32次方个8bit,等于232Byte,
232(Byte)=210 * 210 * 210 * 22(Byte)=4GB

所以常说32位操作系统最多支持4GB内存,64位操作系统同理。
内存地址

注意区分:
1MB/s(兆字节/秒)=8Mbps(兆位/秒)
1MB/s=8Mbps
个人理解:。。。 。。。


大端小端

32bit宽的16进制 0x12345678 在内存中的存放方式:
大端: 高字节存储在低地址,低字节存储在高地址

内存地址 0x1000 0x1001 0x1002 0x1003
存放内容 0x12 0x34 0x56 0x78

小端: 低字节存储在低地址,高字节存储在高地址

内存地址 0x1000 0x1001 0x1002 0x1003
存放内容 0x78 0x56 0x34 0x12

堆向高地址扩展,栈向低地址扩展。
windows上内存是中间向两头增长,linux上的内存是两头向中间增长。

相关文章: