C语言-字、半字、内存位宽相关

1、32位系统:32位系统指的是32位数据线,但是一般地址线也是32位,这个地址线32位决定了内存地址只能有32位二进制,所以逻辑上的大小为2的32次方。内存限制就为4G.实际上32位系统中可用的内存是小于等于4G的(例如我32位CPU装32的windows,但是实际电脑只有512M内存)。

2、内存位宽

(1)、从硬件角度来讲,硬件内存的实现本身是有宽度的,也就是说有些内存条就是8位的,而有些就是16位的。那么需要强调的是内存芯片之间是可以并联的,通过并联之后即使8位的内存芯片也可以做出来16位的或者32位的硬件内存。

(2)、从逻辑角度讲:内存位宽在逻辑上是任意的,甚至逻辑上存在内存位宽是24位(但这种在硬件上是买不到的,没有实际意义)。从逻辑角度讲不管内存位宽多少,我直接操作即可,对我的操作不构成影响。但是因为你的操作最终是由硬件去执行的,所以内存位宽不是任意的,受限于硬件。譬如24位内存和32位内存在逻辑上没有任何区别,但实际硬件都是32位的,都是按照32位硬件的特性和限制来干活。

3、内存单元的大小单位有4个:位(1 bit)  字节(8 bit)  半字(一般是16bit)  字(一般是32bit)

     字、半字这些单位具体是多少位是依赖于平台的。

原文地址:https://www.cnblogs.com/jiangtongxue/p/11345668.html