1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C语言位运算实现加法减法

C语言位运算实现加法减法

时间:2022-01-27 05:58:52

相关推荐

C语言位运算实现加法减法

编写C语言程序,实现基于位运算的加减法器。要求:

(1)源操作数和目的操作数均为int类型;

(2)除循环控制变量外,加减运算过程中,不得使用C语言的“+”和“-”运算符;

(3)控制信号M=0,做加法;M=1,做减法;

(4)运算结果包括和/差、溢出判别标志V,v=1为溢出,v=0为未溢出;

题目设定即为只能使用位运算,代码具体如下:

#include<stdio.h>#include<stdlib.h>void main(){int s,d,s1,d1,m,r=0,v,i,cin,cout;printf("请输入源操作数:");scanf("%d",&s);printf("请输入目的操作数:");scanf("%d",&d);printf("请输入控制信号M:");//0为加法,1为减法scanf("%d",&m);cout=m&0x00000001; cin=cout;for(i=0;i<=31;i++){v=cout;s1=(s&(1<<i))>>i;d1=(d&(1<<i))>>i^m; //逐位提取r|=((s1^d1^cin)<<i);//按位获取结果cout=((s1&d1)|((s1^d1)&cin)); //进位信号cin=cout; //下一位cin等于上一位cout}v=(v^cout)&0x00000001; //最后一位进位信号为溢出信号printf("运算结果为%d,溢出情况为%d\n",r,v);}

调试结果正确

解决了您的问题请给一个免费的赞哦~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。