这是来自汇编语言一步一步一书,Jeff Duntemann:
这是快速浏览:一位是一个二进制数字,0或1.一个字节 是8位并排。一个字是并排的2个字节。一个双字 是两个字并排。四字是并排的2个双字。
这是来自计算机组织和汇编语言原理:使用Java虚拟机一书,Patrick Juola:
为方便起见,通常将8位分组为一个块, 通常称为字节。下一个最大的命名块是 一个字。单词的定义和大小不是绝对的,而是变化的 从电脑到电脑。一句话是最方便的大小 计算机要处理的数据块。
这是一个字2字节(16位),还是计算机处理的最方便的数据块? (我也不确定这意味着什么..)
答案 0 :(得分:17)
我对这些书中的任何一本都不熟悉,但第二本书更接近当前的现实。第一个可能是讨论特定的处理器。
处理器的字数大小各不相同,并不总是8的倍数。
8086和8087处理器使用16位字,这可能是第一作者写的机器。
最近的处理器通常使用32或64位字。
在50年代和60年代,有些机器的单词大小现在看起来很奇怪,例如4,9和36.因为大约有70个字的大小一般都有是2的幂和8的倍数。
答案 1 :(得分:2)
第二个引用是正确的,一个单词的大小因计算机而异。 ARM NEON体系结构是具有32位字的体系结构的示例,其中64位量被称为“双字”,128位量被称为“四字”:
NEON操作数可以是向量或标量。 NEON向量可以是 64位双字向量或 128位四字向量。
通常情况下,只有16位系统才能找到16位字,就像Amiga 500一样。
答案 2 :(得分:1)
这来自Steven Levy的书Hackers: Heroes of the Computer Revolution。
..记忆已减少到4096"字"每个十八位 (A" bit"是二进制数字,1或0。一系列二进制数 数字被称为"字")。
正如其他答案所示,"字"似乎没有固定的长度。
答案 3 :(得分:1)
除了其他答案之外,Aleph One在论文Smashing The Stack For Fun And Profit中还介绍了字长可变性(从一个系统到另一个系统)的另一个示例:
我们必须记住,内存只能以 字长。在我们的情况下,一个字是4个字节或32位。所以我们的5字节缓冲区 真的要占用8个字节(2个字)的内存,还有10个字节的缓冲区 将占用12个字节(3个字)的内存。
答案 4 :(得分:0)
在x86 / x64处理器上,一个字节是8位,并且在8位中(从0到255)有256种可能的二进制状态。这是OS如何将键盘按键转换为屏幕上的字母。当您按下' A '键时,键盘会向计算机发送一个等于数字97的二进制信号,并且计算机会在屏幕上打印一个小写的' a ' 。您可以在任何Windows文本编辑软件中确认这一点,方法是:按住ALT键,在NUMPAD上键入97,然后释放ALT键。如果将“ 97”替换为0到255之间的任何数字,则会在屏幕上打印的系统字符代码页上看到与该数字关联的字符。
如果一个字符是8位或1个字节,则 WORD 必须至少是2个字符,即16位或2个字节。传统上,您可能会认为一个单词的字符数量不一,但是在计算机中,所有可计算的内容都是基于静态规则的。此外,计算机不知道字母和符号是什么,只知道如何对数字进行计数。因此,在计算机语言中,如果 WORD 等于2个字符,则双字或 DWORD 就是2个 WORDs ,与4个字符或字节相同,等于32位。此外,一个四字或 QWORD 是2个 DWORDs ,与4个 WORDs ,8个字符或64位相同。
注意,这些术语在功能上仅限于开发人员的Windows API,但可能在其他情况下出现(例如,Linux dd命令使用数字后缀来组合字节和块大小,其中< em> c 是1个字节, w 是字节)。
答案 5 :(得分:0)
“最方便的数据块”可能指的是WORD的宽度(以位为单位),与系统总线宽度相对应,或者可以使用任何可用的基础“带宽”。在16位系统中,将WORD定义为16位宽,将数据以WORD大小的大小逐块移动将是最有效的方法。 (在硬件或“系统”级别上。)
由于Java或多或少与平台无关,因此它仅将“ WORD”定义为“ BYTE”中的下一个大小,表示“全带宽”。我猜想任何能够运行Java的平台都将32位用于WORD。