一个由ai开发的转换器,可将二进制转为十进制
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
// 函数用于将十进制整数部分转换为二进制
string integerToBinary(long long integerPart) {
if (integerPart == 0) return "0";
string binaryStr;
while (integerPart > 0) {
binaryStr += (char)('0' + (integerPart & 1));
integerPart >>= 1;
}
reverse(binaryStr.begin(), binaryStr.end());
return binaryStr;
}
// 函数用于将十进制小数部分转换为二进制,这里设定精度为64位小数(可按需调整)
string fractionToBinary(double fractionPart) {
string binaryStr;
int precision = 64; // 控制小数转换的精度,避免无限循环
while (fractionPart > 0 && precision > 0) {
fractionPart *= 2;
int bit = (int)fractionPart;
binaryStr += (char)('0' + bit);
fractionPart -= bit;
precision--;
}
return binaryStr;
}
// 主函数整合整数和小数部分的转换,实现完整的十进制转二进制
string decimalToBinary(long long integerPart, double fractionPart) {
string integerBinary = integerToBinary(integerPart);
string fractionBinary = fractionToBinary(fractionPart);
if (!fractionBinary.empty()) {
return integerBinary + "." + fractionBinary;
}
return integerBinary;
}
int main() {
long long integerPart;
char dot;
cout << "请输入一个十进制数(整数或有限小数): ";
cin >> integerPart >> dot >> fractionPart;
cout << "对应的二进制数为: " << decimalToBinary(integerPart, fractionPart) << endl;
return 0;
}