int方法二进制加法

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


//转换为int
int charToInt(char* sThing, int len)
{
    int numN = 0;

    char Temp = '2';
    for (int i = 0; i < len; i++)
    {
        Temp = sThing[i];
        if (Temp == 49)
        {
      
            numN += pow(2, len-i-1);
        }
    }
    return numN;
}

//十进制转二进制,求二进制长度
int getLen(int a)
{
    int c=1;
     while ((a != 0) && (a!= 1))
        {

            a = a / 2;
            c++;
        }
return c;
}


//转换回char
char* intToChar(int sThing, int lenCount)
{

    char* ans = (char*)malloc(sizeof(char) * (lenCount + 1));
    char* Temp = (char*)malloc(sizeof(char) * (lenCount + 1));
   

    for (int i = 0; i < lenCount; i++)
    {
        if ((sThing%2) == 0)
        {
            ans[i] = '0';
        }
        else
        {
            ans[i] = '1';
        }
        sThing = sThing / 2;
    }
    ans[lenCount] = '\0';
for(int i = 0; i < lenCount; i++)
{
Temp[i]=ans[lenCount-i-1];
}
Temp[lenCount]='\0';
    return Temp;

}
char* addBinary(char* a, char* b) {
int lenA=strlen(a);
int lenB=strlen(b);
int inta=charToInt(a,lenA);
int intb=charToInt(b,lenB);
int count = inta + intb;
int lenCount=getLen(count);
char* ans = (char*)malloc(sizeof(char) * (lenCount + 1));
ans = intToChar(count,lenCount);

return ans;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值