我的任务是在C中编写一个程序,它接受二进制数字串并添加它们。这两个字符串的长度可以不同,因此在添加之前,需要将它们填充到相同的大小。
//Make copy of strings with proper padding
char *aCopy = (char *)calloc(size+1,sizeof(char));
char *bCopy = (char *)calloc(size+1,sizeof(char));
int i;
for(i = size; i >= 0; i--)
{
aCopy[i] = '0';
bCopy[i] = '0';
}
for (i = strlen(a); i >= 0; i--)
if (i == 0 && a[i]=='1') //Two's complement
aCopy[i] = '1';
else
aCopy[size - i] = a[strlen(a)-i];
for (i = strlen(b); i >= 0; i--)
if (i == 0 && b[i]=='1') //Two's complement
bCopy[i] == '1';
else
bCopy[size - i] = b[strlen(b)-i];
我遇到了一个问题,如果行注释“Two's complement”运行(它们用于将前导1位移到填充字符串的前面),填充字符串的长度变得比它应该多一个是。我无法弄清楚为什么会这样,而且它搞砸了我的计算。
编辑:为了澄清,额外的'0'字符被添加到二进制补码字符串的末尾。