C++实现十六进制的加法
时间: 2023-07-11 19:12:55 浏览: 135
16进制加法C++程序(自编写代码)
3星 · 编辑精心推荐
好的,以下是一个C++程序,可以实现十六进制的加法:
```c++
#include <iostream>
#include <string>
using namespace std;
int hex_to_dec(char c) {
if (c >= '0' and c <= '9')
return c - '0';
else if (c >= 'a' and c <= 'f')
return c - 'a' + 10;
else if (c >= 'A' and c <= 'F')
return c - 'A' + 10;
else
return -1; // 非法字符
}
char dec_to_hex(int n) {
if (n >= 0 and n <= 9)
return '0' + n;
else if (n >= 10 and n <= 15)
return 'a' + n - 10;
else
return '?'; // 非法数字
}
string add_hex(string hex1, string hex2) {
// 将两个十六进制数的长度调整为相同
if (hex1.length() < hex2.length())
hex1.insert(0, hex2.length() - hex1.length(), '0');
else if (hex1.length() > hex2.length())
hex2.insert(0, hex1.length() - hex2.length(), '0');
string result = ""; // 存放计算结果
int carry = 0; // 进位标志
// 从低位到高位依次相加
for (int i = hex1.length() - 1; i >= 0; i--) {
int sum = hex_to_dec(hex1[i]) + hex_to_dec(hex2[i]) + carry;
carry = sum / 16;
sum %= 16;
result = dec_to_hex(sum) + result;
}
// 最高位可能进位
if (carry > 0) {
result = dec_to_hex(carry) + result;
}
return result;
}
int main() {
string hex1, hex2;
cout << "请输入第一个十六进制数:";
cin >> hex1;
cout << "请输入第二个十六进制数:";
cin >> hex2;
string sum = add_hex(hex1, hex2);
cout << "两个十六进制数的和为:" << sum << endl;
return 0;
}
```
您可以在这个程序中输入您想要计算的两个十六进制数,程序会将它们相加,并把结果以十六进制字符串的形式打印出来。
阅读全文