小R科技-WIFI机器人网·机器人创意工作室

 找回密码
 立即注册
查看: 6048|回复: 1

各位大侠,救助!!!!!!!!

[复制链接]
发表于 2013-4-25 21:24:46 | 显示全部楼层 |阅读模式
哪位大侠帮我看下这个程序哪里出错了?本人万分感激!
单片机中怎么用c语言做二进制加法器

加减法c程序

#include

main()
{
    char* one = "1101";
    char* other = "1101";
    int carry = 0; // =0没有进位  =1 有进位
    int i = 3;
    int j = 0;
    int temp = 0;   
    int result[5] = {0};

    while(i >= 0)
    {
        if(carry == 0)
        {
            temp = 0;
        }
        else
        {
            temp = 1;
            carry = 0;
        }
        temp += (other[i] - '0') + (one[i] - '0');
        if(temp == 2)
        {
            carry = 1;
            result[j] =0;
            j++;
        }
        else if(temp == 3)
        {
            carry = 1;
            result[j] =1;
            j++;
        }
        else
        {
            result[j] =temp;
            j++;
        }
        i--;
    }

    if(carry == 1)
    {
        result[j] = 1;
    }

/* 打印结果 */
    while(j >= 0)
    {
        printf("%d",result[j]);
        j--;
    }
    printf("\n");
}

回复

使用道具 举报

发表于 2017-7-4 15:42:50 | 显示全部楼层
本帖最后由 hekevin 于 2017-7-4 15:44 编辑

首先定义错误!字符不能做算数运算,
    char* one = "1101";
    char* other = "1101";
再次,你的运算太复杂,加法应从低位算起,数组的最高位算起;用if 语句 或者 case 语句就可以完成
如:
int add(int a,int b,int c,int d, //   进位  int e   //  先前 进位)
{
if( a==0 or b==0 or d==0,c=0)
elseif (a==0 or b==0 or d==1, c=1)
elseif (a==0 or b==1 or d==0, c=1)
elseif(a==0 or b==1 or d==1, c=o){  e=1   //    先前进位        }
elseif (a==1 or b==0 or d==0,c=1)
elseif (a==1 or b==0 or d==1, c=c){  e=1   //   先前进位        }
elseif(a==1 or b==1 or d==0, c=0){  e=1   //   先前进位        }
elseif(a==1 or b==1 or d==1,c=1){  e=1   //   先前进位        }}
加法函数调用即可

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

新品特惠推荐上一条 /2 下一条

QQ|QQ技术咨询1|QQ技术咨询2|商务合作微信1:xiaorgeek001|商务合作微信2:XiaoRGEEK|诚聘英才|Archiver|手机版|小R科技-WIFI机器人网·机器人创意工作室 ( 粤ICP备15000788号-6 )

GMT+8, 2024-11-22 23:34 , Processed in 1.086821 second(s), 18 queries .

Powered by XiaoR GEEK X3.4

© 2014-2021 XiaoR GEEK

快速回复 返回顶部 返回列表