十进制与任意进制的转换
2014-12-25 21:45
387 查看
进制的转换是个十分基础的问题,很多字符串变换的过程本质上都可以归结为进制的转换
首先是十进制转换为二进制
我们知道二进制是计算机最基本的操作,因此是十分特别的,我们可以直接通过位操作来得到十进制的二进制形式,其中涉及位的基本操作
接下来是十进制转换任意大于进制(大于十),此时如果余数大于等于10,我们需要用英文字母来表示
接下来我们来看leetcode上的一道题
Given a positive integer, return its corresponding column title as appear in an Excel sheet.
For example:
这道题目可以看做是十进制转换为二十六进制+string操作的练习
//十进制转换为任意进制的源码
#include <iostream>
#include<stdlib.h>
#include<string>
using namespace std;
string convertToTitle(int n)
{
string s;
char c;
if(n<1)
return "";
else
{
while(n)
{
n--;
c=n%26+'A';
s +=c;
n=n/26;
}
reverse(s.begin(),s.end());
return s;
}
}
int main()
{
int num;
char i;
string s;
cin>>num;
s=convertToTitle(num);
for(i=0;i<s.length();i++)
{
cout<<s[i];
}
system("pause");
return 1;
}
首先是十进制转换为二进制
//十进制转换为二制的源码 #include <iostream> #include<stdlib.h> #include<vector> using namespace std; void ten2two(int n) { vector<int> vec; while(n) { vec.push_back(n%2); n=n/2; } vector<int>::iterator iter; for(iter=vec.end()-1;iter!=vec.begin();iter--) { cout<<*iter; } cout<<*iter; cout<<endl; } int main() { int num; cin>>num; ten2two(num); system("pause"); return 1; }
我们知道二进制是计算机最基本的操作,因此是十分特别的,我们可以直接通过位操作来得到十进制的二进制形式,其中涉及位的基本操作
#include <iostream> #include<stdlib.h> #include<vector> using namespace std; int ten2two(int n) { int i,k; vector<int> vec; for(i=0;i<sizeof(int)*8;i++) { if(n & (1<<i)) k=i; } for(i=0;i<=k;i++) { if(n & (1<<i)) vec.push_back(1); else vec.push_back(0); } vector<int>::iterator iter; for(iter=vec.end()-1;iter!=vec.begin();iter--) { cout<<*iter; } cout<<*iter; return 1; } int main() { int num; char i; string s; cin>>num; ten2two(num); system("pause"); return 1; }
接下来是十进制转换任意大于进制(大于十),此时如果余数大于等于10,我们需要用英文字母来表示
//十进制转换为任意进制的源码 #include <iostream> #include<stdlib.h> #include<vector> using namespace std; #define NUM 16 void ten2n(int n) { vector<int> vec; while(n) { vec.push_back(n%NUM); n=n/NUM; } vector<int>::iterator iter; for(iter=vec.end()-1;iter!=vec.begin();iter--) { if(*iter>=10) cout<<(char)(*iter + 55); else cout<<*iter; } if(*iter>=10) cout<<(char)(*iter + 55); else cout<<*iter; cout<<endl; } int main() { int num; cin>>num; ten2n(num); system("pause"); return 1; }
接下来我们来看leetcode上的一道题
Excel Sheet Column Title
Given a positive integer, return its corresponding column title as appear in an Excel sheet.
For example:
1 -> A 2 -> B 3 -> C ... 26 -> Z 27 -> AA 28 -> AB
这道题目可以看做是十进制转换为二十六进制+string操作的练习
//十进制转换为任意进制的源码
#include <iostream>
#include<stdlib.h>
#include<string>
using namespace std;
string convertToTitle(int n)
{
string s;
char c;
if(n<1)
return "";
else
{
while(n)
{
n--;
c=n%26+'A';
s +=c;
n=n/26;
}
reverse(s.begin(),s.end());
return s;
}
}
int main()
{
int num;
char i;
string s;
cin>>num;
s=convertToTitle(num);
for(i=0;i<s.length();i++)
{
cout<<s[i];
}
system("pause");
return 1;
}
相关文章推荐
- 无符号十进制整数转换成任意进制数
- 【任意进制转换】 例:输入十进制转换二进制
- c++十进制int型整数转换成计算机中存储的任意进制
- NOJ 1012 进制转换(十进制转换成任意进制)
- HLG 1896 将任意进制数转换为十进制 (基础题)
- 设计算法把一个十进制的整数转换成二至九进制之间的任意进制输出
- 无符号十进制整数转换成任意进制数
- 数制转换--十进制转换任意进制---栈--初始化--调用--每日一练(七)
- 十进制转换为任意进制(2~16)
- 十进制转换为任意进制 java实现
- 十进制转换成任意进制(模板)
- C++ 任意进制转换为十进制,十进制转换为任意进制
- 任意进制与十进制之间的转换
- 将十进制转换为任意进制的数
- 十进制转换成任意进制(栈的应用)
- 用栈实现十进制到任意进制的转换
- 十进制任意整数类型向常见数值类型进制转换的通用办法
- HDU--2031--十进制转换到任意进制
- 十进制与任意进制的转换 分类: 编程 2014-12-25 21:45 91人阅读 评论(0) 收藏
- 十进制转换为任意进制及操作符重载