C++ 任意精度浮点库的实现
我必须实现任意精度的浮点库,所以指数和尾数必须是无限正整数。稍后,我必须使用处理器的x86功能创建加法和减法函数等。我必须使用C++/C(我可以使用汇编插入),我可以使用现成的库 一开始我有问题: 1.使用哪种类型存储无限大的正整数? 2.哪些库/函数将允许我使用处理器的功能,并将使用上述数据类型C++ 任意精度浮点库的实现,c++,c,assembly,C++,C,Assembly,我必须实现任意精度的浮点库,所以指数和尾数必须是无限正整数。稍后,我必须使用处理器的x86功能创建加法和减法函数等。我必须使用C++/C(我可以使用汇编插入),我可以使用现成的库 一开始我有问题: 1.使用哪种类型存储无限大的正整数? 2.哪些库/函数将允许我使用处理器的功能,并将使用上述数据类型 使用哪种类型存储无限大的正整数 整数的向量。就像一个固定大小的整数由字节组成一样,这个大整数由更小的部分组成。但是,与固定大小的整数不同,向量可以任意增长(直到内存耗尽) 可以将向量包在C++中的自定
可以将向量包在C++中的自定义类型中,提供面向对象的接口。 2.哪些库/函数将允许我使用处理器的功能,并将使用上述数据类型
如果创建自定义类型,其他库将无法直接支持它。但是,如果类提供兼容接口,则可以使用通用模板库 例如,如果您提供了比较运算符和赋值运算符,那么使用标准库中的std::sort
对自定义类对象进行排序应该没有问题
我可以使用现成的图书馆
这通常是个好主意。我建议您这样做。一个重要的考虑因素是,您将使用什么作为内部单位表示的基础。正如其他人所说,这可能是单个单元的向量,然后您可以使用在小学学到的“纸上”操作来处理这些单元。可能是一个结构,它为Mantasa和exponent分别保存向量,并为每个向量的符号设置标志。但是,这些单独的单位是什么呢 这些操作的效率使这一选择更加有趣 您可能认为使用字符和基数10是编写此代码的最简单方法,而读写函数非常简单!但实际上,处理器在每次处理一个十进制字节时效率很低。这是伟大的阅读中的数字,虽然!例如,执行56*37需要对“十进制”体系结构执行以下操作:
- 6*7->42
- 42/10->4
- 42%10->2*
- 5*7->35
- 35/10->3
- 35%10->5
- 6*3->18
- 18/10->1
- 18%10->8
- 5*3->15
- 15/10->1
- 15%10->5
- 4+5+8->17
- 17/10->1
- 17%10->7*
- 3+1+5+1->10
- 10/10->1
- 10%10->0*
- 1+1->2
- 2/10->0
- 2%2->2*
- 最后答案_u2; 0 7 2