- 不使用四则运算,求两个整数的和
int count(int a,int b){
while(a!=0){
int cur=a^b;//异或运算,不同为一相同为0,替代没有进位的加法运算。
a=(a&b)<<1;//与运算,用于判断哪些位进位,没有进位则终止循环
b=cur;
}
return b;
}
- 求两个二进制字符串的和
string addBinary(string a, string b) {
int a1 = a.size();
int b1 = b.size();
while (a1 < b1) {
a = "0" + a;
a1++;
}
while (a1 > b1) {
b = "0" + b;
b1++;
}
for (int i = a1 - 1; i > 0; i++) { //解决字符串非首位的加法运算
a[i] = a[i] - '0' + b[i];
if (a[i] >='2') {
a[i] = (a[i] - '0') % 2+'0';
a[i - 1] = a[i - 1] + 1;
}
}
a[0] = a[0] - '0' + b[0];//处理首位的进位问题
if (a[0] >= '2') //若大于等于2,需要进一
{
a[0] = (a[0] - '0') % 2 + '0';
a = '1' + a;
}
return a;
}