进制转化是学习编程中最常见的问题之一,涉及的知识点比较简单,是入门等级的问题。
这里记录一下自己用起来比较顺手的进制转化代码:
最基本的想法一共分为三步:
- j进制转十进制
- 十进制转k进制
- vans
核心代码部分:
// 十进制转k进制部分
int dec2k(int k, int dec)
{
int res = 0;
int i = 1;
while(dec)
{
res = res + i * (dec % k);
dec = dec / k;
i = i * 10;
}
return res;
}
因此总代码为:
#include <iostream>
using namespace std;
int j2dec(int j, int num)
{
int res = 0;
int i = 1;
while(num)
{
res = res + i * (num % 10);
num = num / 10;
i = i * j;
}
return res;
}
int dec2k(int k, int num)
{
int res = 0;
int i = 1;
while(num)
{
res = res + i * (num % k);
num = num / k;
i = i * 10;
}
return res;
}
int j2k(int j, int k, int num)
{
int dec,res;
dec = j2dec(j,num);
res = dec2k(k,num);
return res;
}
int main()
{
int a,b,num;
int res;
cin >> a;
cin >> b;
cin >> num;
res = j2k(a,b,num);
cout << res << endl;
}
这样的写法其实不是特别便捷,我想把j->dec与dec->k这两个过程和在一起写,但由于输入数字时计算机默认为十进制所以直接暴力移除两个function中10的部分是不合理的。另外,因为不熟悉cpp语言,我还想过用位移符号操作,查了tutorial才知道原来位移运算是二进制限定,所以先把这个思路记下来吧。
许愿顺利毕业,找到好工作。
也祝各位天天开心!