创建无符号 80 位变量

Creating unsigned 80 bit variable

如何创建 80 位无符号变量?创建后,我需要做一些移位操作,就我而言; unsigned long long key=0x00000000000000000000 有效吗?

const unsigned __int64;我可以用 unsigned __int80 更改它吗?

您的基本数据类型受计算机架构的限制,因此可能是 8 位、16 位和 32 位整数,也可能是 64 位整数。

有些机器对 128 位整数有巧妙的扩展,但在其他机器上你必须 组合 类型才能实现,这是由 [=38 在后台为你完成的=] "bigint" 个图书馆。例如,它们可能会将两个 64 位整数包装成一个“128 位整数”class,当 incrementing/decrementing 结果值时透明地处理 carry-over。

没有什么特别的原因我能想到你不能将相同的逻辑应用于包装 64 位整数和 16 位整数或五个的 "bigint" class 16 位整数 — 哪个最适合您取决于您​​的用例,因此您可以同时尝试和衡量。

我喜欢Boost.LargeInt1,你可以用它写typedef large_int<uint64_t, uint16_t> uint80_t;然后继续写你的程序。

碰巧,这个库已经有 examples of precisely this,用于 96 位、160 位和 192 位整数。

或者,购买 80 位计算机。

1 令人困惑 so-named 因为它是为了包含在 Boost 中而提交的,而不是因为它实际上是一个 Boost 库。