#include <stdio.h>
#include <iostream>
#include <vector>
#include <string>
#pragma warning(disable:4996);
using namespace std;
string Divide(string str, int x)
{
int remainder = 0;
for (int i = 0; i < str.size(); i++)
{
int current = remainder * 10 + str[i] - '0';
str[i] = current / x + '0';
remainder = current % x;
}
int pos = 0;
while (str[pos] == '0')
pos++;
return str.substr(pos);
}
string Multiple(string str, int x)
{
int carry = 0;
for (int i = str.size() - 1; i >= 0; --i)
{
int current = x*(str[i] - '0') + carry;
str[i] = current % 10 + '0';
carry = current / 10;
}
if (carry != 0)
{
str = "1" + str;
}
return str;
}
string Add(string str, int x)
{
int carray = x;
for (int i = str.size() - 1; i >= 0; i--)
{
int current = (str[i] - '0') + carray;
str[i] = current % 10 + '0';
carray = current / 10;
}
if (carray != 0)
{
str = "1" + str;
}
return str;
}
int main()
{
string str;
cin >> str;
//把这个十进制数字变成二进制
vector<int> binary;
while (str.size() != 0)
{
//转变成2进制
int num = str[str.size() - 1] - '0';
binary.push_back(num % 2);
str = Divide(str, 2);
}
//binary是一个逆序的二进制
//把二进制逆序变成十进制
string answer = "0";
for (int i = 0; i < binary.size(); i++)
{
answer = Multiple(answer, 2);
answer = Add(answer, binary[i]);
}
cout << answer;
}
KY26 10进制 VS 2进制
最新推荐文章于 2024-08-26 17:31:44 发布