c语言二进制数的加减运算

Python015

c语言二进制数的加减运算,第1张

1、二进制加法基本指令

(1)ADD指令

格式:ADD DST,SRC

该指令把源操作数(SRC)指向的数据与目的操作数(DST)相加后,将结果放到目的操作数(DST)中,所执行的操作:(DST)ß(SRC)+(DST)

SRC和DST不能同时为存储器操作数和段寄存器,同时SRC和DST的数据类型要匹配,要同是字节或字。受影响的标志位有:OF,SF,ZF,AF,PF,CF。

(2)ADC指令

格式:ADC DST,SRC

所执行的操作:(DST)ß(SRC)+(DST)+CF 了解清楚进位是怎样加的

该指令把两个操作数(SRC和DST)相加以后,再加上进位标志CF,将结果放到目的操作数(DST)中。受影响的标志位有:OF,SF,ZF,AF,PF,CF。ADC指令多用于多精度数据相加。

2、二进制减法基本指令

(1)SUB指令

格式:SUB DST,SRC

所执行的操作:(DST)ß (DST)-(SRC)

该指令把源操作数(SRC)指向的数据与目的操作数(DST)相减后,将结果放到目的操作数(DST)中,SRC和DST不能同时为存储器操作数和段寄存器(,同时SRC和DST的数据类型要匹配,要同是字节或字。受影响的标志位有:OF,SF,ZF,AF,PF,CF。

(2)SBB指令

格式:SBB DST,SRC

(DST)ß (DST)-(SRC)-CF 了解清楚进位是怎样减的

该指令把两个操作数(SRC和DST)相减以后,再减去CF,将结果放到目的操作数(DST)中。受影响的标志位有:OF,SF,ZF,AF,PF,CF。SBB指令多用于多精度数据相加。

#include <stdio.h>

int Max_div(int n, int m)

{   

int x = n < 0?-n:n,y = m,t

if(x % y == 0)

{

printf("%d\n",x/y)

return 0

}

for(t= x < y?x : y x % t != 0||y % t != 0 t--)

printf("%d/%d\n",n/t,m/t)

}

int main()

{

int a,b,c,d

char ch

while(scanf("%d/%d%c%d/%d",&a,&b,&ch,&c,&d) != EOF)

{

if(ch == '+')

{

Max_div(d*a+b*c,b*d)

}

else

{

Max_div(d*a-b*c,b*d)

}

}

}