代码之家  ›  专栏  ›  技术社区  ›  CuriousMind

爪哇。byte[]数组:它们不应该只有1和0吗?[副本]

  •  -2
  • CuriousMind  · 技术社区  · 6 年前

    我正在努力 The Elements of Computing Systems

    黑客电脑包括一个黑白屏幕,由256个字符组成 每行512像素的行。屏幕的内容由 安 8K内存映射 从RAM地址16384(0x400)开始。每行 在物理屏幕中,从屏幕左上角开始,是 在RAM中由32个连续的16位字表示。因此 位于RAM[16384+r]的字的位(从LSB到MSB的计数)* 32+c%16]。要写入或读取物理屏幕的一个像素 (1=黑色,0=白色)。

    那么,如果屏幕是256行512像素,每个像素是一个位,那么整个屏幕的8K内存映射是什么呢?

    那不是16K内存地图吗?

    我唯一能想到的是,因为单词大小是16位,也许这是一个因素?我一直都知道“byte”的意思是8位,但如果它的定义取决于计算机的字长,也许这会为我解开这个谜。有人能给我解释一下那一段描述的屏幕是如何用8K内存映射而不是16K内存映射来表示的吗?

    0 回复  |  直到 13 年前
        1
  •  22
  •   Community Mohan Dere    9 年前

    是的,在现代计算中,一个字节总是8位。

    这本书用的是单词,不是字节

    书中明确提到了单词和单词的大小,而没有一个关于字节的单词(哈哈)。看这个短语 ..is represented in RAM by 32 consecutive 16-bit words.

    说到处理器体系结构,词汇是非常重要的。编程语言中的单词通常是2字节(或16位),但在处理器体系结构中,它们也可以是8或32位,它们指的是处理器使用的数据单元的自然大小,因此本书使用单词而不是字节是有意义的,因为文本似乎非常面向硬件。

    this answer .

    Wikipedia 描述一个字节最初是如何(1960年代)基于它需要保存的信息的大小,因此6位字节可用于(英语)字符,而其他大小的字节可用于不同的数字格式。它一开始是6位表示英文字符,后来发展到7位以支持ASCII,最终8位IBM System/360的流行导致了8位字节的全球接受。

    字节是表示数据量的软件单元,而字则与处理器/内存体系结构联系更紧密,表示处理器中的工作单元(寄存器)和内存中的可寻址单元。 然而现在,一个字节总是被认为是8位,而单词是8位的倍数。目前仍有不同字号的处理器,但它们是专用处理器。普通的硬件,从PC到手机和游戏机都遵循这个标准。

        2
  •  1
  •   Greg Young    7 年前

    然而,也有其他位计数为1字节的系统6位/7位是常见的。然而,还有其他更为模糊的问题。

    归根结底,我认为今天很少能找到一台不是基于8位到1字节的机器。

        3
  •  -5
  •   Jon Jay Obermark    12 年前

    短语“1千字节”被推广为“1千乘8”,意思是你会有一个千字(1024个可寻址块)的内存是8位“宽”,因为每个可寻址块是8位。

    这个词并不总是八位的,但当它不是的时候,它从来没有被称为“由八”,它是“由四个”或“由十六个”,或在一些巴勒斯簿记机的惊人的例子“由一百二十八个”。在另一个极端,霍尼韦尔机器最初是这样组织的,即存储器中的每一个位都有一个唯一的地址,因此它们将拥有如此多的“kilo by one”内存包。

    在你所说的机器的情况下,它将有“8kilox16”内存,因此8K内存映射,特别是8Kx16,其中只有8192个地址,每个地址都是16位宽。

    考虑到ASCII和EBCDIC,有8位地址边界是最便宜的,可以有效地进行文本处理,即使您的机器的寄存器更宽。注册范围较窄的机器干脆就灭绝了。