
我大致明白题主的意思了。
题主显然是没闹明白机器字长和内存容量之间的区别和联系。
所谓“计算机结构为32位”,是指计算机的机器字长是 位,也就是计算机一次能够运算的数据是 位的。
比如指令
就是两个 位的数据之间做加法,处理器可以直接将两个 位的数据相加。
那么为什么 位的机器,其最大内存是 字节呢?
存储一个满字长的数据当然用不了那么大的内存,但是计算机需要通过地址来定位数据在内存中的位置。处理器中的寄存器不可能存储那么多数据,它必须从指令中获取地址,从而通过地址找内存要数据。
地址在机器中其实就是用数字来表示的。好比一家“长条”旅馆用房号来代表房屋的地址,就像这样
当然每个“房间”都有 位数据“居住”,也就是说“房号”代表着第几个字节,序数是从0开始的。
那么只要字长能表示这个“房号”,那么它就能识别内存中特定的地址。那么 位的字长能表示多少个“房号”呢?
注意这里不是存储“房号”,而是依据“房号”定位“房间”。
用枚举法?那还是先看 位的情形吧:
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
没错,就是0~15,可以定位总共16个“房间”。
因为二进制只有两个数字,就是0和1,所以,计算指定机器字长能够表示多少个整数就可以用分步原理,第一步放在最高位,第二步放在次高位,依此下去,直到最低位。
所以 位能够表示的整数个数就是 ,对应着 个“房间”,也就是 个字节。
也就是说,32位的数据,占据4个字节,但能够定位最多 个字节的内存空间。
