C++实现16进制加法
时间: 2023-07-11 22:23:11 浏览: 115
以下是 C++ 实现 16 进制加法的示例代码:
```c++
#include <iostream>
#include <string>
using namespace std;
string hex_add(string num1, string num2) {
// 将两个字符串前面补 0,使它们的长度相等
int len = max(num1.length(), num2.length());
while (num1.length() < len) {
num1 = "0" + num1;
}
while (num2.length() < len) {
num2 = "0" + num2;
}
string result = "";
int carry = 0;
for (int i = len - 1; i >= 0; i--) {
int sum = carry;
if (num1[i] >= '0' && num1[i] <= '9') {
sum += num1[i] - '0';
} else {
sum += num1[i] - 'A' + 10;
}
if (num2[i] >= '0' && num2[i] <= '9') {
sum += num2[i] - '0';
} else {
sum += num2[i] - 'A' + 10;
}
carry = sum / 16;
sum %= 16;
if (sum >= 0 && sum <= 9) {
result = to_string(sum) + result;
} else {
result = (char)(sum - 10 + 'A') + result;
}
}
if (carry > 0) {
result = to_string(carry) + result;
}
return result;
}
int main() {
string num1, num2;
cout << "请输入两个 16 进制数:" << endl;
cin >> num1 >> num2;
string result = hex_add(num1, num2);
cout << "它们的和为:" << result << endl;
return 0;
}
```
在上面的代码中,我们定义了一个 `hex_add` 函数,用于实现 16 进制加法。该函数接受两个字符串类型的参数 `num1` 和 `num2`,分别表示需要相加的两个 16 进制数。在函数内部,我们首先将这两个字符串前面补 0,使它们的长度相等。接下来,我们从后往前遍历这两个字符串,并将它们对应位置上的字符转换成数字,然后将它们相加。如果相加的结果大于等于 16,则需要进位,并将相加的结果减去 16。最后,我们将得到的结果转换成字符,并将其存储到一个新的字符串 `result` 中。在遍历完这两个字符串后,如果还有进位,则需要将进位的值加上去。最后,我们返回结果字符串 `result`。
在 `main` 函数中,我们首先提示用户输入两个 16 进制数,然后调用 `hex_add` 函数计算它们的和,并输出结果。
阅读全文