#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;
}
int方法二进制加法
最新推荐文章于 2023-12-18 12:31:56 发布