77范文网 - 专业文章范例文档资料分享平台

大数加减运算(2)

来源:网络收集 时间:2019-03-16 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

加,再加上前一位的进位,再去判断是否本位是否有进位, 有则把本位数字改为减去它的权,也就是10,再置进位为1。如果没有进位,则给进位赋值0。

事实上,输入的两个大数均为字符串,对将第一个大数反转所得到的字符串命名为number1,第二个大数命名反转所得到的字符串为number2,对于第i位

int c=int (number1.[i] + number2.[i] - 96);

若c<10则表明该位相加没有进位,c>10则表明有进位。

若int carry=c/10,则对于加法运算结果反转所得字符串result的第i+1位满足(carry表示来自低位的进位):

int temp=number1.[i+1] + number2.[i+1]+carry - 96; result[i+1]=temp;

图2: 加法运算示意图

在实际编码中,为了提高效率,先将number1.[i] + number2.[i] - 48的值以字符的形式存在字符串容器result的第i个位置中,这样两个数相差较大时可以减少循环次数,最后再统一进行处理。

2.2 无符号减法运算的实现——MINUS方法

减法稍微有一点复杂, 因为会处理负数,而我们所用的是字符串的形式来保存数字也是为这一点。否则用整型或其它类型时,则表示处理、保存时会相当复杂。算法也是从低位开始减。先要判断减数和被减数那一个大,减数位大于被减数是正常减;被减数大,则被减数减减数,最后还要加上负号;处理每一项时要,如果前一位相减有借位,就先减去上一位的借位,无则不减,再去判断

4

是否能够减开被减数,如果减不开,就要借位后再去减,同时置借位为1,否则置借位为0。

下面是我实现比较数字字符串大小的方法: //返回1前者较大,返回0两者相等,返回-1后者较大

privateint COMPARE(String number1, String number2) { intj;

intlength1 = number1.length(); intlength2 = number2.length(); if (number1.length() == 0) number1 = \; if (number2.length() == 0)

number2 = \;

j = 0;

for (inti = 0; i

break; }

number1 = number1.substring(j); j = 0;

for (inti = 0; i

break; }

number2 = number2.substring(j); length1 = number1.length(); length2 = number2.length(); if (length1>length2) { return 1;

} elseif (length1 == length2) {

if (number1.compareTo(number2) > 0) { return 1; } elseif (number1.compareTo(number2) == 0) { return 0; } else {

return -1;

}

5

}

} else { }

return -1;

思路是如果两个数长度不一样那么长度长的整数大;如果长度一致,由于0-9这10个数字的ASCII是逐渐递增的逐一只要取出每一位的字符来比较即可。

这样就可以判断减数和被减数哪个大,对于减数位大于被减数是正常减;被减数大,则被减数减减数,最后还要追加结果前面负号。

判断借位与加法判断进位原理差不多,就不一一说明了。

图3:减法实现示意图

2.3 有符号加减运算的实现——add方法和sub方法

UI类调用传参前会去除输入的数字中带有的’+’、’,’、空格等符号。add方法对两个数进行判断,如果两个数字均负(以‘-’开头),则转换为无符号大整数相加并在结果前面追加’-’;如果一正一负则转化为无符号大整数相减;如果均为正数,则进行无符号大整数相加。

sub方法思路同add方法。 代码如下:

// 带符号大整数加法

public String add(String num1, String num2) {

if (isNumeric(num1) && isNumeric(num2)) {

String result=null; charc1 = num1.charAt(0); charc2 = num2.charAt(0); if (c1 == '-') {

if (c2 == '-') {

result=\+this.PLUS(num1.substring(1),

num2.substring(1));

} else {

6

}

}

}

result=this.MINUS(num2, num1.substring(1));

} else {

if (c2 == '-') { }

result=this.MINUS(num1, num2.substring(1)); result=this.PLUS(num1, num2); } else {

returnresult;

return\您的输入格式不正确\; }

// 带符号大整数减法

public String sub(String num1, String num2) { }

if (isNumeric(num1) && isNumeric(num2)) { }

return\您的输入格式不正确\;

String result=null;

num1.replaceAll(\, \); num2.replaceAll(\, \); charc1 = num1.charAt(0); charc2 = num2.charAt(0); if (c1 == '-') { }

returnresult;

if (c2 == '-') { }

if (c2 == '-') { }

result=this.PLUS(num1, num2.substring(1)); result=this.MINUS(num1, num2); } else {

result=this.MINUS(num2.substring(1), num1); result=\+this.PLUS(num1.substring(1), } else {

num2.substring(1));

} else {

7

第三章运行结果效果图

1、程序初始界面

2、加法

图:加法示例1

8

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库大数加减运算(2)在线全文阅读。

大数加减运算(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/526992.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: