地址线和内存之间的关系是什么?

What is the relation between address lines and memory?

这些是我的作业:

Write a program to find the number of address lines in an n Kbytes of memory. Assume that n is always to the power of 2.

示例输入: 2

示例输出: 11

我不需要具体的编码帮助,但我不知道地址线和内存之间的关系。

用非常简单的术语表达,没有任何总线多路复用,寻址内存所需的位数就是访问所需的(地址或数据)数那段记忆。

引用 Wikipedia 文章,

a system with a 32-bit address bus can address 232 (4,294,967,296) memory locations.

举个简单的例子,考虑一下,你有3条地址线(ABC),所以可以用3位组成的值是

A B C
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1

共8个值。因此,使用 ABC,您可以访问这八个值中的任何一个,即,您可以 到达 任何这些内存地址。

所以,TL;DR,简单的关系是,n,我们可以表示2 n 个地址。

地址线通常是指CPU/chipset和内存之间的物理连接。它们指定要访问内存中的哪个地址。所以任务是找出将输入数字作为地址传递需要多少位。

在您的示例中,输入为 2 KB = 2048 = 2^11,因此答案为 11。如果您的输入为 64 KB,则答案为 16 (65536 = 2^16)。