Add Binary

来源:互联网 发布:淘宝减肥产品哪个好 编辑:程序博客网 时间:2024/06/05 21:17
void addtwobits(char *sum,char a,char b,int *carry){    *sum=(((a-'0')+(b-'0')+*carry)&0x01)+'0';    *carry=((a-'0')+(b-'0')+*carry)>>1;}void revert(char *a,int *len){    int i=0;    *len=strlen(a);    for(i=0;i<(*len)/2;i++)    {        char tmp=a[i];        a[i]=a[*len-1-i];        a[*len-1-i]=tmp;    }}char* addBinary(char* a, char* b) {    int maxlen=0;    int minlen=0;    char* n;    char* m;    int ls,rs;    revert(a,&ls);    revert(b,&rs);    if(ls>rs)    {        n=a;        m=b;        maxlen=ls+2;        minlen=rs;    }    else    {        n=b;        m=a;        maxlen=rs+2;        minlen=ls;    }    int i=0;    int carry=0;    char* sum=malloc(sizeof(char)*maxlen);    for(;i<maxlen-2;i++)    {        if(i<minlen)            addtwobits(&sum[i],n[i],m[i],&carry);        else            addtwobits(&sum[i],n[i],'0',&carry);    }        if(carry==1)    {                sum[i]=carry+'0';        sum[i+1]=0;    }    else        sum[i]=0;    int len;    revert(sum,&len);    return sum;}

0 0
原创粉丝点击