31

假设 32 位操作系统。

  1. 计算机中的一个内存位置存储多少数据?

  2. 计算机内存存储的基本单位是什么?

  3. 例如存储一个整数需要什么内存地址?如果基本单位是 BYTE,则整数需要 4 个字节。因此,如果我需要存储一个字节,那么如果开始将第一个字节放入内存位置 0001,那么我的整数会在 0003 内存位置结束吗?

如果错了请纠正我?

4

3 回答 3

34

最常见的是,现代系统就是您所说的“字节可访问”。这表示:

  1. 一个内存位置存储 1 个字节(8 位)。
  2. 内存的基本存储单位是 1 个字节。
  3. 如果您需要存储 4 个字节,并将第一个字节放在 0001,那么最后一个字节将位于 0004。即 0001、0002、0003 和 0004 各有一个字节。

请记住,虽然系统具有不同的 CPU大小(32 位系统有 32 位或 4 字节字),但内存通常按字节寻址。CPU 在算术中使用的寄存器是 4 个字节,但程序员用于数据存储的“内存”是以字节为单位寻址的。

在 x86 系统上,许多内存访问指令要求内存中的值与可被字长整除的地址“对齐”。例如 0x???0、0x???4、0x???8、0x???C。因此,在大多数系统上都不会在 0001 处存储一个 int。非数字数据类型通常可以在任何地址找到。

参见维基百科:对齐 字(计算) 内存地址

于 2011-03-07T03:40:50.037 回答
2

计算机中的一个内存位置存储多少数据?

这取决于计算机。内存位置是指 CPU 可以直接寻址的内存的一部分。

计算机内存存储的基本单位是什么?

它是Bit,然后是Byte,但不同的 CPU 更愿意用特定大小的字来寻址内存。

例如存储一个整数需要什么内存地址?如果基本单位是 BYTE,则整数需要 4 个字节。

在数学中,整数是无限的,因此应该需要无限的内存来表示所有/任何整数。计算机体系结构关于应该使用多少内存来表示整数的选择是任意的。最后,关于如何表示和操作整数的逻辑是在软件中,即使它嵌入在固件中。编程语言 Python 对整数有无限表示(但请不要在上面尝试googol)。

最后,所有计算机体系结构都以某种方式允许寻址到字节级别,但它们在字长的地址上工作得最好,这通常与 CPU 寄存器的位长相匹配。

这与数据量或整数大小无关,而是与计算机可以使用的内存地址的数量有关。

32 位中有 4GiB 地址(用于字节)。要管理具有超过 4GiB RAM 的机器集群,每个系统都必须管理更大的地址。

同样,这完全是关于可寻址的内存空间,而不是整数的大小。即使 CPU 更喜欢 8 位字寻址,也有 64 位整数。

于 2011-03-07T04:08:26.210 回答
0
  1. 取决于架构。32 位为 32 位。64 位为 64 位。
  2. 通常它被称为“单词”
  3. 大多数值需要对齐,因此地址以 0 4 8 或 C 结尾
于 2011-03-07T03:27:51.427 回答