创建无符号 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 库。
如何创建 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 库。