64KB内存存储单元数量及寻址位数相关技术咨询
问题2:一台计算机拥有64KB内存,其地址可寻址性为8字节。请问它有多少个存储单元?寻址每个存储单元需要多少位?
先拆解你的问题,顺便纠正你给出的计算式问题:
1. 存储单元数量
这里要先区分两个容易混淆的概念:
- 如果存储单元还是指字节:总数和问题1完全一致,还是65536个——总内存大小没变,只是寻址的粒度(每个地址对应的内存块大小)变了而已。
- 如果指的是可寻址的地址单元(也就是每个地址对应的那块8字节内存):那就是总字节数除以每个地址覆盖的字节数,计算式为:
65536 / 8 = 8192个,也就是2^13个。
你给出的计算式 2^16字节 / 8字节 * 2^3位=2^16位 是错误的——这里混淆了存储单元的定义和单位换算。位(bit)是比字节更小的单位,但我们说的“存储单元”要么是字节,要么是地址对应的内存块,和位的换算完全不搭边。而且就算计算总内存的位数,65536字节应该是 65536 * 8 = 524288 位(也就是 2^19 位),你的计算结果也不对,这个式子完全偏离了“存储单元数量”的问题核心。
2. 寻址每个存储单元所需位数
这个概念很好理解:用二进制地址来唯一标记一个存储单元,需要多少位的地址编码。
因为n位二进制数能表示 2^n 个不同的状态,每个状态对应一个唯一的存储单元地址。核心公式就是:地址位数 = log2(存储单元总数)。
对应两种情况:
- 如果存储单元是字节:需要
log2(65536) = 16位地址。 - 如果存储单元是8字节的可寻址块:需要
log2(8192) = 13位地址。
一般题目里提到“地址可寻址性为8字节”,通常问的是后者——也就是寻址每个可寻址块需要的位数,答案是13位。
内容的提问来源于stack exchange,提问作者Brian




