二进制底层算法
2026-02-14 09:43:21
发布于:上海
0阅读
0回复
0点赞
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string decToBin(long long num) {
if (num == 0) return "0";
string bin;
while (num > 0) {
bin.push_back((num % 2) + '0');
num /= 2;
}
reverse(bin.begin(), bin.end());
return bin;
}
long long binToDec(const string& bin) {
long long dec = 0;
for (char c : bin) {
dec = dec * 2 + (c - '0');
}
return dec;
}
string binaryStrAdd(string a, string b) {
string result;
int carry = 0;
int i = a.size() - 1, j = b.size() - 1;
while (i >= 0 || j >= 0 || carry > 0) {
int digitA = (i >= 0) ? (a[i--] - '0') : 0;
int digitB = (j >= 0) ? (b[j--] - '0') : 0;
int sum = digitA + digitB + carry;
carry = sum / 2;
result.push_back((sum % 2) + '0');
}
reverse(result.begin(), result.end());
return result;
}
long long binaryAdd(long long a, long long b) {
string binA = decToBin(a);
string binB = decToBin(b);
string binSum = binaryStrAdd(binA, binB);
return binToDec(binSum);
}
int main() {
long long a, b;
cin >> a >> b;
cout << binaryAdd(a, b) << endl;
return 0;
}
这里空空如也







有帮助,赞一个