c语言中对较大数字的处理?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中对较大数字的处理?相关的知识,希望对你有一定的参考价值。

用C语言实现将一个大数转化为科学计数法的形式,基数存储到一个变量,指数存储到另一个变量,从而进行运算(之前看过将大数用数组来存储,但我觉得这还是对大数的位数限制很大,有没有更好的方法?)

大数处理一般就两种方式,一种是整型的方式,保存绝对准确值 在不出现溢出时,运算结果完全准确。当范围超过最大整型范围时,就需要用数组了
另外一种就是浮点数的方式,通过保存底数和指数的方式,以一定精度表示近似值。
也就是说,如果要绝对准确,那就必须占用更多空间
快速大数可以参考gnu的gmp库
参考技术A 因为编译器定义了某种类型占用的空间,例如int占用4字节,unsigned char占用1字节,既然空间是有限的,那么表示数字的范围肯定也是有限的,例如unsigned char的范围就是0~255。

如果想处理超出类型定义范围的数怎么办呢,只能自己用代码实现了,大概思路就是增加空间来存储大数,然后使用专门的函数来实现大数的加减乘除等基本运算。

参考openssl源码中bignum部分,代码在crypto\bn目录下
参考技术B c语言对整形的处理 如果数值过大会变成一个垃圾值
浮点数的存储不准确
参考技术C 不错他们说的都很对。

以上是关于c语言中对较大数字的处理?的主要内容,如果未能解决你的问题,请参考以下文章

C语言数字图像处理进阶---11 扩散滤镜

C语言数字图像处理进阶---11 扩散滤镜

数字图像处理中,灰度的指数变换和对数变换分别有啥有

[c语言]总结冒泡排序的一些细节

为啥C语言中用float类型进行较大值的运算会丢失较多精度

c语言图像处理