多少位是“单词”?

问题描述 投票:26回答:5

这是来自汇编语言一步一步的书,Jeff Duntemann:

这是快速浏览:一位是单个二进制数字,0或1.一个字节是8位并排。一个字是并排的2个字节。双字是并排的2个字。四字是并排的2个双字。

这来自“计算机组织和汇编语言原理:使用Java虚拟机”一书,Patrick Juola:

为方便起见,通常将8位分组为单个块,通常称为字节。下一个最大的命名块是一个字。单词的定义和大小不是绝对的,而是因计算机而异。一个字是计算机要处理的最方便的数据块的大小。

那么是一个字2字节(16位),还是计算机最方便的数据块? (我也不确定这意味着什么..)

byte bit
5个回答
18
投票

我对这些书中的任何一本都不熟悉,但第二本书更接近当前的现实。第一个可能是讨论特定的处理器。

处理器具有多种字长,并不总是8的倍数。

8086和8087处理器使用16位字,这可能是第一作者写的机器。

最近的处理器通常使用32或64位字。

在50年代和60年代,有些单词大小的机器现在看起来很奇怪,例如4,9和36.因为大约70年代的单词大小通常是2的幂和8的倍数。


2
投票

第二个引用是正确的,一个单词的大小因计算机而异。 ARM NEON体系结构是具有32位字的体系结构的示例,其中64位量被称为“双字”,128位量被称为“四字”:

NEON操作数可以是向量或标量。 NEON向量可以是64位双字向量或128位四字向量。

通常来说,16位字只能在16位系统上找到,比如Amiga 500。


1
投票

这是来自Steven Levy的书Hackers: Heroes of the Computer Revolution

..内存已减少到每个18位的4096个“字”。 (“位”是二进制数字,可以是1或0.一系列二进制数称为“字”)。

正如其他答案所暗示的那样,“单词”似乎没有固定长度。


1
投票

除了其他答案之外,另一个单词大小可变性的例子(从一个系统到下一个系统)在Aleph One的论文Smashing The Stack For Fun And Profit中:

我们必须记住,内存只能以字大小的倍数来处理。在我们的例子中,一个字是4个字节,或32位。所以我们的5字节缓冲区实际上需要占用8个字节(2个字)的内存,而我们的10字节缓冲区将占用12个字节(3个字)的内存。


0
投票

在x86 / x64处理器上,一个字节是8位,并且在8位,0到255中有256种可能的二进制状态。这就是操作系统将键盘击键转换为屏幕上的字母的方式。当您按下“A”键时,键盘会向计算机发送一个等于数字97的二进制信号,并且计算机会在屏幕上打印一个小写的“a”。您可以在任何Windows文本编辑软件中通过按住ALT键,在NUMPAD上键入97,然后释放ALT键来确认。如果将“97”替换为0到255之间的任何数字,您将在屏幕上打印的系统字符代码页上看到与该编号关联的字符。

如果字符是8位或1字节,则WORD必须至少为2个字符,因此为16位或2个字节。传统上,您可能会将单词视为不同数量的字符,但在计算机中,可计算的所有内容都基于静态规则。此外,计算机不知道字母和符号是什么,它只知道如何计算数字。因此,在计算机语言中,如果WORD等于2个字符,则双字或DWORD为2个WORD,与4个字符或字节相同,等于32位。此外,四字或QWORD是2个DWORD,与4个WORD,8个字符或64位相同。

请注意,这些术语在功能上限于开发人员的Windows API,但可能出现在其他情况下(例如,Linux dd命令使用数字后缀来组合字节和块大小,其中c是1个字节,w是字节)。

© www.soinside.com 2019 - 2024. All rights reserved.