32位和64位的正确术语是什么?

3

我非常清楚不同架构提供32位或64位寄存器,以及它们在低级别上是如何工作的。然而,有一件事情一直困扰着我... 如何准确地称呼你的架构是32位还是64位。例如:

string XXX;

if(architecture == i386) XXX = "32"; else if(architecture == x86_64) XXX = "64";

... 程序继续使用变量XXX ...

那么,我应该给我的变量起什么名字?不是architecture,不是“位数”,也不是“总线宽度”或“寄存器宽度”(这似乎不太合适)。

那么这个变量应该被命名为什么,对话中会用到什么样的术语?

5个回答

3
我想到了“指针大小”,因为32位和64位的相关问题首先涉及应用程序/操作系统可以寻址多少内存。
但是几乎任何这样的术语都会与你在对话中说的内容不同,因为每个人大多数时候都说“32位”和“64位”(有时也说“x86”和“x64”)。
那么就用architectureBitLength怎么样?

1
我觉得你对谈话部分的理解很准确,就是会说“是的,那段代码是32位的”或者“那个驱动程序在64位系统上有问题”,尽管我觉得自己说这些话的时候有点傻,因为“64位”其实是一个形容词,硬生生地把它当成名词用有点别扭。我并不是语法警察什么的,而且意思(可能)也能理解,但还是有点滑稽。 - Nektarios
1
我认为它没有变成名词。在说和理解时,“xx位”仍然是形容词,因为当你说这样的话时,有一个隐含的名词来提供上下文:“那个驱动程序对于64位[操作系统]出了问题”;“你应该安装[我们正在谈论的东西的]32位[版本]”。省略冗余的上下文是很常见的。可以尝试在English.SE或Programmers.SE上询问(或迁移此内容)? - Joel B Fant

2
我会将其翻译为“我会称之为wordSize = 'xx',我会说‘字长’”。

我认为也许你是对的,但这与广泛认为16位是x86架构的字长相冲突。例如,在x86-64上,64位寄存器操作实际上是用“pushq”完成的,其中q表示四个字(16 * 4 = 64)。仅仅因为x86很荒谬并不意味着你是错的,但这只是我的看法。 - Nektarios
@Nektarios 哈哈,你肯定比我更了解这个。不过我认为对于这个问题,有不止一个正确的答案。 - user686605

1

这个维基百科页面提到了“字长”,但也涉及到“地址长度”,这又延伸到“地址空间”这个术语。
不幸的是,许多系统使用“字”这个术语来表示“16位数据值”,这会让事情变得混乱。
这个页面的第一段似乎坚定地确认了用户686605的立场:“字长”。


0

我倾向使用术语“位宽”。我知道这与字面意义并不完全一致,但人们似乎更容易理解。


-1

位数是我偏爱的术语。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接