哪种C数据类型可以表示40位二进制数?

我需要表示一个40位的二进制数.应该使用哪种C数据类型来处理这个问题?
如果您使用的是符合C99或C11标准的编译器,则使用int_least64_t以获得最大兼容性.或者,如果你想要一个无符号类型,uint_least64_t.这些都在< stdint.h>中定义.

< stdint.h>通常也定义int64_t,但由于标准不需要它,因此可能不会在每个实现中定义它.然而:

> int_least64_t – 至少64位,和
> int_fast64_t – 此实现中至少64位的最快大小

C99和C11都要求它们存在(参见C99标准中的第7.18.1.2-3节和C11标准中的第7.20.1.2-3节).

虽然C99指定long long是at least 64 bits on a particular machine(第5.2.4.2.1节),但<stdint.h>中的类型设计为可显式移植.

您可以在不同平台here上阅读有关整数大小的更多信息.
请注意,整数类型的大小是长数据类型的问题 – 在64位Windows上,它当前是32位,而在64位linux上它是64位.出于这个原因,我相信你最安全地使用< stdint.h>中的类型.

值得注意的是,有些人觉得长久以来更具可读性.就个人而言,我更喜欢< stdint.h>中的类型,因为它们允许您在使用它们时说出您的意思 – 我发现它更具可读性.当然,可读性通常是一种品味问题 – 如果你正在使用现有的代码库,我只会按照他们所做的去做:)

如果您的编译器仅支持C89,则R..’s solution将允许最多53位的整数精度.

https://stackoverflow.com/questions/9595225/which-c-datatype-can-represent-a-40-bit-binary-number

转载注明原文:哪种C数据类型可以表示40位二进制数?