c - 有哪些方法可以对相应二进制编码大于硬件支持的值进行算术运算?

标签 c math bit

如果我想对大于 2^32 的值进行算术运算并且不想使用长整数,我该怎么做?

我可以想到一个方案,通过使用多个变量来实现一个数字来实现数字(我希望的任何位数):

int upper32;  
int lower32;

以上2个变量可以表示一个2^64位的值(如果lower 32溢出,我将upper32加1。这会需要一些开销。

有哪些更好的实现方式?

最佳答案

如果你想处理不大于2^64的整数,那么你可以使用long long或者unsigned long long ,它们是 64 位整数。

如果你想用更大的数字做算术,看看gmp library ,或者编写自己的多精度算术库(很简单)。

另外,看看 this

关于c - 有哪些方法可以对相应二进制编码大于硬件支持的值进行算术运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30021514/

相关文章:

c - 在 printf 中发布增量和指针

c++ - 在同一个调用中打印 %n 的值 - 毫无意义?

c - 读取文件时出现未知符号

c++ - 3D 点投影到 2D XY 平面

python - 在 Python 中计算线(斜率 x)和水平线之间的角度(度)

java - 按负数移动

c - 为什么pthreads在c中顺序执行

python - 奇怪的错误: ZeroDivisionError: float division by zero

c - 为什么我们将 (temp>>11) 乘以 2 来找到此代码中的第二个

c - 如何手动计算像 ~0x000C 这样的表达式?