当前位置:首页 » 操作系统 » 源码减法出错

源码减法出错

发布时间: 2022-05-15 18:11:18

A. 原码减法会出错吗

你这是十进制转换为二进制问题
7(十进制)= 0111(二进制)
7-1(十进制)= 6(十进制)= 0110(二进制)
此题是看在(十进制)里减1,还是在(二进制)里减1.

B. c++ 复数运算,减法出错了

程序并没有错。

因为第二次做a=a-b时的a,已经是输入时的a+b了

下面对程序做了一点修改,减去一个新输入的复数d,这样可以看得更清楚:

输入a和b,输出a+b(所得的和,存放在a中);

再输入d,输出a-d(就是输入时的a+b-d)。

C. C语言计算普通加减法怎么出错了

那个 ,1+2是写在双引号外面的。应该是这样的:printf("%d", 1+2);

D. 原码的减法为什么可以转换成补码的加法意义又是什么呢

时钟,倒拨3小时,可以用正拨9小时来代替。

限定两位数时,减一,就可用+99代替。

如:24-1=23

24+99=(1)23

只取两位数,两个结果,就是相同的。

99,就是-1 的补数。

(在二进制时,就称为“补码”。)

就是说:当限定计算的位数后,使用补码,就可用加法代替减法运算

意义:仅用一个加法器,就可做加减两种运算。减少硬件,厂家省钱。

E. 原码的减法

你想想102-29,减的时候是怎么借位的,0被借位之后变成了什么。借一位就是加10,二进制就是加2,如果向"0"借位,待会0(已经是-1了)向1借位的时候,就变成9,而不是10,(二进制就是0变成2-1,而不是2)。
13-7,即1101减0111,得0110,即6,验证正确

F. 定点数中原码的减法

原码不能直接参加运算,可能会出错。例如数学上,1+(-1)=0,
而在二进制中00000001+10000001=10000010,换算成十进制为130。显然出错了。
所以原码的符号位不能直接参与运算。
计算机中数值一律用补码来表示。

G. 原码减法的问题

你这是十进制转换为二进制问题

7(十进制)= 0111(二进制)
7-1(十进制)= 6(十进制)= 0110(二进制)

此题是看在(十进制)里减1,还是在(二进制)里减1。

H. 为什么Excel减法会出错

把具体公式内容发上来才知道问题所在。加0表示精确查询,找不到相同值就返回错误值;不加是模糊查询,找不到相同值就返回最接近的值。

I. 这个C++减法改了后又出现错误了,如8747774-7477正确,但7477-8747774就出错了,求再次帮我解答,谢谢!

应该把代码的文本发上来,不要用用图片。

#include<stdio.h>
#include<string.h>
#include<malloc.h>

constintMAXSIZE=1000;

//完成以字符串形式的两个大数相加。返回字符串形式的和。
//tatol←addnum1+addnum2
char*LargeNumberAdd(charconst*addnum1,charconst*addnum2,char*total){
inti,j,k=0,len,result,carry=0;
intlen1=strlen(addnum1);
intlen2=strlen(addnum2);
for(i=len1-1,j=len2-1;i>=0&&j>=0;--i,--j){
result=addnum1[i]-'0'+addnum2[j]-'0'+carry;
carry=result/10;
total[k++]=result%10+'0';
}
while(i>=0){
result=addnum1[i--]-'0'+carry;
carry=result/10;
total[k++]=result%10+'0';
}
while(j>=0){
result=addnum2[j--]-'0'+carry;
carry=result/10;
total[k++]=result%10+'0';
}
if(carry)total[k++]=carry+'0';
total[k]='';
len=strlen(total);
for(i=0;i<len/2;++i){
k=total[i];
total[i]=total[len-1-i];
total[len-1-i]=k;
}
returntotal;
}

//完成以字符串形式的两个大数相减。返回字符串形式的差。
//difference←subnum1-subnum2
char*LargeNumberSub(char*subnum1,char*subnum2,char*difference){
inti,j,k,result,borrow=0;
intsign=0,swap=0;
char*pta,*ptb;
intlen1=strlen(subnum1);
intlen2=strlen(subnum2);
if(len1==len2){
for(i=0;i<len1;++i){
if(subnum1[i]<subnum2[i]){
swap=1;
break;
}
}
}
if(len2>len1||swap==1){
pta=(char*)malloc((len2+1)*sizeof(char));
ptb=(char*)malloc((len1+1)*sizeof(char));
strcpy(pta,subnum2);
strcpy(ptb,subnum1);
k=len1;
len1=len2;
len2=k;
sign=1;
}
else{
pta=(char*)malloc((len1+1)*sizeof(char));
ptb=(char*)malloc((len2+1)*sizeof(char));
strcpy(pta,subnum1);
strcpy(ptb,subnum2);
}
for(i=len2-1,j=len1-1,k=0;i>=0;--i,--j){
result=pta[j]-ptb[i]-borrow;
if(result<0){
result+=10;
borrow=1;
}
elseborrow=0;
difference[k++]=result+'0';
}
while(j>=0){
result=pta[j--]-'0'-borrow;
if(result<0){
result+=10;
borrow=1;
}
elseborrow=0;
difference[k++]=result+'0';
}
if(sign)difference[k++]='-';
difference[k]='';
for(i=0;i<k/2;++i){
result=difference[i];
difference[i]=difference[k-1-i];
difference[k-1-i]=result;
}
free(pta);
free(ptb);
returndifference;
}

intmain(){
chars[MAXSIZE]="123";
chart[MAXSIZE]="456";
charresult[MAXSIZE+1];
printf("%s+%s=%s ",s,t,LargeNumberAdd(s,t,result));
printf("%s-%s=%s ",s,t,LargeNumberSub(s,t,result));
return0;
}
热点内容
微信平台无法上传图片 发布:2024-10-11 00:55:59 浏览:139
加密锁折断 发布:2024-10-10 23:57:30 浏览:146
上传活动成果 发布:2024-10-10 23:48:27 浏览:186
2345解压慢 发布:2024-10-10 23:48:26 浏览:199
php中文空格 发布:2024-10-10 23:36:26 浏览:757
cli编译器 发布:2024-10-10 23:31:12 浏览:120
电脑网络配置怎么调最好 发布:2024-10-10 23:31:01 浏览:833
甘肃机架式存储服务器机箱厂 发布:2024-10-10 23:25:26 浏览:347
油泵房配置哪些消防系统 发布:2024-10-10 23:23:59 浏览:953
pcl如何创造有mods服务器 发布:2024-10-10 23:16:18 浏览:855