首页 > 学院 > 开发设计 > 正文

二进制求和

2019-11-08 01:03:02
字体:
来源:转载
供稿:网友

二进制求和

题目要求: ![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; 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;
上一篇:文章标题

下一篇:new、init和metaclass

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表