您的位置:首页 > 其它

二进制求和

2017-02-21 17:33 288 查看

二进制求和

题目要求:

![[1]]http://static.zybuluo.com/liu-matthew/x3gzdg2kegu0k81kgo1cr7rh/%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_20160821124353.png][1]

6.1 version one

string result = "";
int c = 0, num = 0;
int i = a.size() - 1, j = b.size() - 1;
for (; i >= 0 && j >= 0; i--, j--)
{
num = (a[i] - '0') + (b[j] - '0') + c;
c = num / 2;
num = num % 2;
result += ('0' + num);
}
for (; i >= 0; i--)
{
num = (a[i] - '0') + c;
c = num / 2;
num = num % 2;
result += ('0' + num);
}
for (; j >= 0; j--)
{
num = (b[j] - '0') + c;
c = num / 2;
num = num % 2;
result += ('0' + num);
}
if (c != 0)
{
result += ('0' + c);
}
i = 0; j = result.size() - 1;
while (i < j)
{
char temp = result[i];
result[i] = result[j];
result[j] = temp;
i++; j--;
}
return result;


6.2 version two

算法描述:

string addBinary(string& s1, string& s2)
1:将s1和s2变为等长字符串,较短的在前置位补0;
2:string temp = s1 & s2;

97c3
string carry;carry数组为进位统计数组。
如:s1 = 101, s2 = 001; 则 temp = 100, carry = 010;
3:s1 = temp; s2 = c; 递归调用addBinary(s1,s2);
4: if(carry == 0) return s1;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: