数据类型的最小大小是以位还是字节为单位定义的?
Is the minimum size of datatypes defined in bits or bytes?
我知道 char
中的位数是在 CHAR_BIT
中从 <limits.h>
定义的,并且 sizeof(char)
始终为 1。但是其他基本数据类型呢,它们的大小是相对于 CHAR_BIT
定义的吗?
例如,C 中 int
的最小大小定义为 16 位 on Wikipedia, but on other sites like GeeksforGeeks 最小大小定义为 2 个字节。哪个定义是正确的,一个字节不一定等于8位。
类型值的最小要求范围是用数字定义的,而不是根据位或字节。 5.2.4.2.1 Sizes of integer types <limits.h>
说有这样的定义:
- minimum value for an object of type
short int
SHRT_MIN
-32767 // -(215 - 1)
- maximum value for an object of type
short int
SHRT_MAX
+32767 // 215 - 1
所有类型定义恰好与使用 8 位字节的倍数的二进制补码或符号幅度表示来实现类型相匹配。但由于它们只是最小值,因此不需要此类表示。
Is the minimum size of datatypes defined in bits or bytes?
它主要由 C 规范属性和 CHAR_BIT
的组合定义。 CHAR_BIT >= 8
.
int
具有最小范围 [-32767... 32767],要求至少 16 位对其进行编码。
与常见的CHAR_BIT == 8
,即16位或2字节。
与常见的CHAR_BIT == 16
,即16位或1个“字节”。 byte 在此实现中为 16 位。
与常见的CHAR_BIT == 64
,即64位或1个“字节”。 64 位,因为没有类型小于 char
.
像 (u)intN_t
这样的精确大小的整数类型实际上是由位大小定义的。它们也有 min/max 范围值,但没有填充和 2 的补码要求有效地由 位 定义。注意:这些是可选类型。
关于最小 floating point 位大小的一些深奥的想法。
我知道 char
中的位数是在 CHAR_BIT
中从 <limits.h>
定义的,并且 sizeof(char)
始终为 1。但是其他基本数据类型呢,它们的大小是相对于 CHAR_BIT
定义的吗?
例如,C 中 int
的最小大小定义为 16 位 on Wikipedia, but on other sites like GeeksforGeeks 最小大小定义为 2 个字节。哪个定义是正确的,一个字节不一定等于8位。
类型值的最小要求范围是用数字定义的,而不是根据位或字节。 5.2.4.2.1 Sizes of integer types <limits.h>
说有这样的定义:
- minimum value for an object of type
short int
SHRT_MIN
-32767 // -(215 - 1)- maximum value for an object of type
short int
SHRT_MAX
+32767 // 215 - 1
所有类型定义恰好与使用 8 位字节的倍数的二进制补码或符号幅度表示来实现类型相匹配。但由于它们只是最小值,因此不需要此类表示。
Is the minimum size of datatypes defined in bits or bytes?
它主要由 C 规范属性和 CHAR_BIT
的组合定义。 CHAR_BIT >= 8
.
int
具有最小范围 [-32767... 32767],要求至少 16 位对其进行编码。
与常见的CHAR_BIT == 8
,即16位或2字节。
与常见的CHAR_BIT == 16
,即16位或1个“字节”。 byte 在此实现中为 16 位。
与常见的CHAR_BIT == 64
,即64位或1个“字节”。 64 位,因为没有类型小于 char
.
像 (u)intN_t
这样的精确大小的整数类型实际上是由位大小定义的。它们也有 min/max 范围值,但没有填充和 2 的补码要求有效地由 位 定义。注意:这些是可选类型。
关于最小 floating point 位大小的一些深奥的想法。