Function one:
//十进制数字转成二进制字符串 string Binary(int x) { string s = ""; while(x){ if(x % 2 == 0) s = '0' + s; else s = '1' + s; x /= 2; } return s; }
Function two:
//二进制字符串变为十进制数字 int Decimal(string s) { int num = 0, len = s.length() - 1; for(int i = 0; s[i]; i++){ if(s[i] == '1') num += pow(2, len - i); } return num; }
Run:
#include<bits/stdc++.h> using namespace std; //十进制数字转成二进制字符串 string Binary(int x) { string s = ""; //定义空字符串,那么如果输入x=0,则返回值为空 while(x){ if(x % 2 == 0) s = '0' + s; else s = '1' + s; x /= 2; } return s; } //二进制字符串变为十进制数字 int Decimal(string s) { int num = 0, len = s.length() - 1; for(int i = 0; s[i]; i++){ //利用pow函数实现次幂运算 if(s[i] == '1') num += pow(2, len - i); } return num; } int main(void) { int num; string s; cin >>num; cout <<Binary(num) <<endl; //二进制字符串输出 cout <<Decimal(Binary(num)) <<endl; //转回十进制 cin >>s; cout <<Decimal(s) <<endl; //输出s对应的十进制数 return 0; }
Result: