8位称为“字节”。16位怎么称呼?“短的”?“单词”?
那么32位呢?我知道“int”依赖于 CPU,我对普遍适用的名称感兴趣。
字节是计算机可以处理的最小数据单位。C 语言定义char
为一个“字节”并且有CHAR_BIT
位。在大多数系统上,这是 8 位。
另一方面,通常是由 CPU 处理的值的大小。大多数时候,这是通用寄存器的大小。这个定义的问题是,它的年龄不够大。
例如,MS WindowsWORD
数据类型是在早期定义的,当时 16 位 CPU 是标准。当 32 位 CPU 出现时,定义仍然存在,一个 32 位整数变成了DWORD
. 现在我们有了 64 位QWORD
的 s。
远非“普遍”,但这里有几种不同的看法:
窗户:
BYTE
- 8 位,无符号WORD
- 16 位,无符号DWORD
- 32 位,无符号QWORD
- 64 位,无符号广发银行:
uint8_t
- 8 位,无符号uint16_t
- 16 位,无符号uint32_t
- 32 位,无符号uint64_t
- 64 位,无符号uintptr_t
- 指针大小的整数,无符号(也存在有符号类型。)
如果您尝试编写依赖于特定数据类型大小的可移植代码(例如,您正在实现网络协议),请始终使用<stdint.h>
.
Werner Buchholz 博士创造了字节这个词来表示“一个数字信息单位,用于描述一组有序的位,作为计算机可以处理的最小数据量”。因此,该词的实际含义取决于相关机器的架构。因此,一个字节中的位数是任意的,可以是 8、16 甚至 32。
有关该主题的详尽论文,请参阅Wikipedia。
16 位或 32 位测量单位没有通用名称。
术语“字”用于描述程序或操作系统一次处理的位数。因此,在 16 位 CPU 中,字长为 16 位。在 32 位 CPU 中,字长为 32 位。我也相信这个术语有点灵活,所以如果我编写一个程序,它以 10 位的块进行所有处理,我可以将这些 10 位的块称为“单词”。
只是要清楚; “int”不是计算机内存的度量单位。它实际上只是用于存储整数的数据类型(即小数部分为零的数字)。因此,如果您找到一种在您的编程语言中仅使用 2 位(或其他)实现整数的方法,那仍然是一个 int。
我曾经将它们称为字节、字和长字。但正如其他人所提到的,它取决于您正在处理的本机架构。
它们被称为2字节和4字节
16 位和 32 位没有任何通用术语。单词的大小取决于机器。
short
,word
并且int
都依赖于编译器和/或架构。
int
是一种数据类型,通常在桌面 32 位或 64 位系统上为 32 位。我认为它永远不会大于底层硬件的寄存器大小,因此它应该始终是一种快速(并且通常足够大)用于常见用途的数据类型。short
那么可能尺寸更小int
,这就是你所知道的。实际上,它们通常是16 位的,但您不能依赖它。word
不是数据类型,而是表示底层硬件的自然寄存器大小。而关于 16 位或 32 位的名称,则没有。没有理由给它们贴上标签。