C++ 实现二进制加法 - addBinary 函数解析
这段代码是一个名为 addBinary 的 C++ 函数,用于计算两个二进制字符串 a 和 b 的和。
函数解析:
-
变量定义:
sum:一个字符串变量,用于存储计算结果的二进制字符串。t:一个整数变量,用于记录进位值,初始值为 0。
-
循环计算:
- 使用
for循环,从a和b字符串的最后一位开始,逐位相加,直到所有位都计算完毕。 - 在循环中:
- 如果
i >= 0,则a字符串还有位可加,将当前位字符转换为整数并加到t中。 - 如果
j >= 0,则b字符串还有位可加,将当前位字符转换为整数并加到t中。 - 计算当前位置的和,即
t % 2,并将其转换为字符类型,添加到sum字符串末尾。 - 更新进位值
t = t / 2。
- 如果
- 使用
-
处理最后的进位:
- 循环结束后,如果
t不为 0,表示还有进位,将其转换为字符类型并添加到sum字符串末尾。
- 循环结束后,如果
-
反转结果:
- 使用
reverse函数将sum字符串反转,得到正确的二进制和。
- 使用
-
返回结果:
- 返回
sum字符串,即两个二进制数的和。
- 返回
代码示例:
class Solution {
public:
string addBinary(string a, string b) {
string sum;
int t = 0;
for (int i = a.size() - 1, j = b.size() - 1; i >= 0 || j >= 0; --i, --j) {
if (i >= 0) t += a[i] - '0';
if (j >= 0) t += b[j] - '0';
sum.push_back((t % 2) + '0');
t /= 2;
}
if (t) sum.push_back(1 + '0');
reverse(sum.begin(), sum.end());
return sum;
}
};
总结:
该函数通过逐位相加的方式实现了二进制数的加法,并考虑了进位情况,最终返回正确的二进制和。
原文地址: https://www.cveoy.top/t/topic/pjvS 著作权归作者所有。请勿转载和采集!