一、 vs平台

利用c语言对大数运算中的模加减运算进行了编码。

二、编码思想

条件:大数a   大数b    模p     结果r

1、加法

首先,判断a、b这两个大数是否小于模p。

如果a和b都小于模p,则:

若a+b>p,r=a+b-p;若a+b<p,r=a+b;

如果a和b其中有一个大于模p或者都大于模p,先将a或b减去p,直到a和b都小于模p为止,a1=(a-p)<p,b1=(b-p)<p,则:r=a1+b1。

2、减法

首先,判断a、b这两个大数是否小于模p。

如果a和b都小于模p,则:

若a[i] > b[i],则 r = a[i] - b[i];

若a[i] < b[i],则 r = a[i] - b[i] + p[i]

如果a和b其中有一个大于模p或者都大于模p,先将a或b减去p,直到a和b都小于模p为止,a1=(a-p)<p 或a1=a,b1=(b-p)<p 或b1=b;

若a1[i] > b1[i],则 r = a1[i] – b1[i];

若a1[i] < b1[i],则 r = a1[i] – b1[i] + p[i]

注:并且存在加法就会有进位,存在减法就会有借位。

a b < p

若 a+b>p   则 r = a+b-p;

若a+b<p   则 r = a+b;

a b > p

先a1 = (a-p)<p    b1 = (b-p)<p

则:r = a1 + b1;

a b < p

若a>b    r=a-b

若a<b    r=a-b+p

a b > p

先a1=(a-p)<p    b1=(b-p)<p

若a1>b1     r=a-b

若a1<b1     r=a-b+p

三、代码说明

void format_conversion(Sint32 *current_datat, Sint32*objective_data);

该函数是一个大小端转换的一个函数。

Uint32 numerical_transformation(Sint32 *num_a, Sint32*num_p, Sint32 *num_b);

该函数为将a与p进行比较,如果a>p,则进行a-p,直到a<p为止,将值赋给b;如果a<p,则将a值赋给b。

Uint32 module_add_sub(Sint32 *add_sub_a, Sint32 *add_sub_b,Sint32 *add_sub_p, Uint32 mode, Sint32 *add_sub_c);

该函数这是主体函数进行大数模加减运算。

大数运算——模加减运算相关推荐

  1. 浮点数的加减运算(阶码、尾数)

    浮点数尾数运算  < ---- >  原码加/减运算 原码:+|x|  或者  -|x|      (正数=0+|x|    负数的=1+|x| ) 符号位和数值部分:分开处理 仅对[数值 ...

  2. mysql实现俩个属性加减运算_1.3 算数运算符

    (1)"运算符"和"数字"构成"表达式" Python中所谓的计算,就如同我们上数学课时所学的表达式.在四则运算当中,我们使用"+ ...

  3. 【Computer Organization笔记06】浮点数的数据表示,浮点数加减运算

    本次笔记内容: P11 计算机组成原理(11) P12 计算机组成原理(12) 本节课对应幻灯片:组成原理13 data,第72页起.此外,本节课内容"浮点数"已经在"汇 ...

  4. oracle时间怎么相加减,Oracle 如何对时间进行简单加减运算

    在我们用dbms_job包进行定时Job的时候,需要设置时间间隔,所以需要知道时间的基本加减方法. SQL> alter session set nls_date_format='yyyy-mm ...

  5. c语言中减号算一个字符吗,C语言中指针的加减运算

    char arr[3]; printf("arr:\n%d\n%d\n%d\n", arr, arr + 1, arr + 2); char *parr[3]; printf(&q ...

  6. leetcode_592. 分数加减运算

    问题描述: 给定一个表示分数加减运算表达式的字符串,你需要返回一个字符串形式的计算结果. 这个结果应该是不可约分的分数,即最简分数. 如果最终结果是一个整数,例如 2,你需要将它转换成分数形式,其分母 ...

  7. HTML5实现浮点数的加减运算,浮点数表示例题

    设 A=–0.101101*2-3,B= 0.101001*2-2,先将A.B表示为规格化的浮点数.要   N=(+-)M2E   其中:M代表尾数,E代表阶码.   计算机中浮点数只用尾数和阶码表示 ...

  8. void *指针的加减运算

    1.手工写了一个程序验证void *指针加减运算移动几个字节: //本程序验证空类型指针减1移动几个字节 #include <stdio.h> int main(int argc, cha ...

  9. 考前自学系列·计算机组成原理·补码定点加减运算和溢出判断,浮点数的加减运算,原码的乘法

    补码定点加减运算和溢出判断 浮点数的加减运算 原码乘法

  10. 2.3.3 浮点数的加减运算与强制类型转换

    文章目录 0.思维导图 1.浮点数的加减运算 2.强制类型转换 0.思维导图 1.浮点数的加减运算 我们直接以一道题目来进行了解: 一般都要先转换格式: 2.强制类型转换

最新文章

  1. [BZOJ2527]Meteors
  2. numpy.eye()用法
  3. Tomcat提示:Error starting static Resources......
  4. shell--printf
  5. 修改MOSS2007内容查询部件实现自定义格式显示
  6. 使用keepalived实现双机热备
  7. Linux 命令之 locate -- 文件查找工具(查找文件/搜索文件)
  8. c语言 方程改main的值_C语言和汇编语言是什么?他们之间可以有怎样的合作?为你解析...
  9. Python 详解K-S检验与3σ原则剔除异常值
  10. 八字易经算法之用JAVA实现生旺死绝和十神
  11. 中央C到底是C几?什么是科学音高记谱法?
  12. 妥善处理的九大面试送命题
  13. Activiti6:模拟钉钉上面的请假流程(使用web画图并导出xml然后使用java执行流程)
  14. 典型的计算机网络安全技术有哪些,网络安全(计算机网络安全技术有哪些)
  15. SLI、SLO和SLA
  16. Android SDK介绍
  17. 使用Ultra Librarian将bxl文件转为OrCAD Capture CIS可识别的库文件(OLB)
  18. 时域同步平均TSA-学习笔记
  19. 在磨金石教育学室内设计靠谱吗?学费贵吗?老师负责吗?
  20. cadence SPB17.4 - allegro - create and switch Visibility view

热门文章

  1. 网吧游戏服务器制作教程,网吧服务器系统环境部署
  2. 一款JAVA微信小程序商城源码,带完整后台【运行版】
  3. 那些值得推荐的Superbrowser跨境工具
  4. WIN10 edge浏览器阻止文件下载解决方法
  5. 看大神如何玩转微信小程序日历插件?
  6. 系统软件设计原则_软件系统设计原则
  7. 全国各省五等份收入统计(2000-2017年)
  8. 如何下载谷歌高清卫星地图影像
  9. 用 reStructuredText 写作:快速入门指南
  10. 戴尔修复计算机软件,DELL电脑系统恢复工具(Dell OS Recovery Tool)2019 v2.3.6066官方版...