【问题标题】:One memory location in a computer stores how much data?计算机中的一个内存位置存储多少数据?
【发布时间】:2011-03-07 03:23:23
【问题描述】:

假设是 32 位操作系统。

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

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

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

如有错误请指正?

【问题讨论】:

  • 基本单位不是 BYTE。它是位,是计算机内存存储的基本单位。
  • 所以你说 1byte 需要 8 个内存位置?
  • 1 字节 = 8 位。要存储 1 个字节,系统需要 8 位存储位置。
  • 如果您想要一个快速字节,单个字节可能需要 48 个晶体管。
  • 我不知道这几年是否发生了变化,但在现代计算中,“字节”(而不是位)是存储和处理的基本单位(britannica.com/technology/byte)。我知道这是一篇旧帖子,但只是想澄清一下。

标签: memory integer memory-address


【解决方案1】:

最常见的现代系统就是您所说的“字节可访问”。 这意味着:

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

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

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

参见维基百科:AlignmentWord (Computing)Memory Address

【讨论】:

    【解决方案2】:

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

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

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

    先是Bit,然后是Byte,但不同的CPU更适合在特定大小的words中寻址内存。

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

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

    最后,所有计算机体系结构都以某种方式允许寻址到ByteBit 级别,但它们最适合使用字长的地址,这通常与 CPU 寄存器的位长相匹配。

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

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

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

    【讨论】:

    • 先生,我问了一个与此类似但略有不同的问题,它被否决了,我问了一个每个初学者都会想到的真正疑问,请你看看这个问题并告诉我这是一个问错问题,然后我刚进入C并正在学习指针,作为初学者。 stackoverflow.com/questions/34774322/…
    • 我认为它被认为是重复的而被否决了。
    • 对于其他问题,我猜这里的人们希望 OP 至少上过一些基本的编程和计算课程或书籍,并且通常不愿意回答作业或编程 101问题。
    • 你认为这是一个硬件问题吗,我有一个真正的疑问,这里人们想了很多,并尝试不回答的方法,只是标记重复,它是-7,然后连续努力达到-4,这是一个非常好的问题,作为初学者意味着,他知道的比你们所有人都少,这个网站是为了分享知识,它正在失去它。
    【解决方案3】:
    1. 取决于架构。 32 位为 32 位。 64 位对应 64 位。
    2. 通常称为“单词”
    3. 大多数值需要对齐,所以地址以 0 4 8 或 C 结尾

    【讨论】:

    • 先生,我问了一个与此类似但略有不同的问题,它被否决了,我问了一个每个初学者都会想到的真正疑问,请你看看这个问题并告诉我这是一个问错问题,然后我刚进入C并正在学习指针,作为初学者。 stackoverflow.com/questions/34774322/…
    • 这个问题不是问需要多少位来寻址一个内存位置,而是一个内存位置可以存储多少位,这通常取决于数据总线的大小。大多数现代计算机都是字节可寻址的。每个地址标识存储的单个字节(八位)。大于单个字节的数据可以存储在一系列连续地址中。 [维基百科]
    • @YM 非常感谢您的澄清,因为这个答案我很困惑。
    猜你喜欢
    • 2020-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多