给定两个二进制字符串,返回他们的和(用二进制表示)。

输入为非空字符串且只包含数字 1 和 0

char* addBinary(char* a, char* b) {
int i = strlen(a);
int j = strlen(b);

int len = i > j?i:j;
char *res = (char*)malloc((sizeof(char)*(len + 2)));
res[++len] = 0;

char carry = '0';
char pa,pb;
while(len >= 1 || carry == '1'){
pa = i >0?a[--i]:'0';
pb = j >0?b[--j]:'0';
res[--len] = pa ^ pb ^carry; //当前位
carry = (pa & carry ) | (pb & carry ) | (pa & pb); //进位

}
return res;
}

相关文章:

  • 2022-01-08
  • 2021-07-20
  • 2022-02-28
  • 2021-08-19
  • 2022-02-06
  • 2021-12-12
  • 2021-11-24
  • 2022-01-03
猜你喜欢
  • 2021-07-13
  • 2021-07-15
  • 2021-06-28
  • 2022-12-23
  • 2021-12-18
  • 2021-07-15
  • 2021-12-12
相关资源
相似解决方案