【发布时间】:2010-01-27 17:09:13
【问题描述】:
在 GMP 库中......
如何在内部执行整数运算?? 像 6=0110,4=0100..和 6+4= 0110+0100.. 在乘法,除法和其他操作的情况下会发生什么!?? 它如何控制溢出位和其他东西...
【问题讨论】:
-
对于内部算法,你应该看看:gmplib.org/manual/Algorithms.html#Algorithms
在 GMP 库中......
如何在内部执行整数运算?? 像 6=0110,4=0100..和 6+4= 0110+0100.. 在乘法,除法和其他操作的情况下会发生什么!?? 它如何控制溢出位和其他东西...
【问题讨论】:
大多数基本的多精度例程都是用汇编代码编写的,并利用了特定的 CPU 指令。
对于加法,基本指令是“ADD-with-Carry”。该指令将两个 CPU 寄存器的内容和进位位相加,然后将结果保存在一个寄存器中,如果溢出则设置进位位。要添加两个多精度数,请清除进位位,然后添加每个多精度值中的第一个字(通常是 C“unsigned int”或“unsigned long”),保存结果,并设置进位位为下一个循环。细节在于处理不同大小的输入等。
对于乘法,基本指令“MULT”只是将两个寄存器相乘,并将结果的上半部分存储在一个 CPU 寄存器中,将结果的下半部分存储在另一个 CPU 寄存器中。
要详细了解它是如何在 CPU 上实际完成的,您需要研究 CPU 的指令集。
【讨论】: