十进制与任意进制的转换 分类: 编程 2014-12-25 21:45 91人阅读 评论(0) 收藏
2014-12-25 21:45
573 查看
进制的转换是个十分基础的问题,很多字符串变换的过程本质上都可以归结为进制的转换
首先是十进制转换为二进制
我们知道二进制是计算机最基本的操作,因此是十分特别的,我们可以直接通过位操作来得到十进制的二进制形式,其中涉及位的基本操作
接下来是十进制转换任意大于进制(大于十),此时如果余数大于等于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<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; }
相关文章推荐
- 编程实现英文数字到中文大写数字的转换 分类: 编译原理 2014-06-02 15:15 541人阅读 评论(0) 收藏
- oracle 数据库转换成mysql工具:ora2mysqcn 分类: database 2013-08-14 10:21 541人阅读 评论(0) 收藏
- Shell脚本编程学习入门 02 分类: arm-linux-Ubuntu 2013-08-30 17:45 427人阅读 评论(0) 收藏
- Android SDK开发包国内下载地址 分类: Android开发 2014-05-30 10:52 91人阅读 评论(0) 收藏
- 核心编程随笔4 分类: VC++ 2013-09-28 08:44 579人阅读 评论(0) 收藏
- 线性表几个基本算法 分类: 编程 2013-03-19 09:26 171人阅读 评论(0) 收藏
- 如何把任意文件隐藏在一张图片里? 分类: DirectX 2013-11-15 16:05 524人阅读 评论(0) 收藏
- DirectX:函数可以连接任意两个filter 分类: DirectX 2014-10-27 19:20 466人阅读 评论(0) 收藏
- android编程如何把现有的背景图片… 分类: Android开发 2014-05-30 10:53 54人阅读 评论(0) 收藏
- 核心编程随笔1 分类: VC++ 2013-09-28 08:42 558人阅读 评论(0) 收藏
- [1,2,3,4,5,6,7,8] 转换成 [(1,2),(2,3),(3,4),(4,5),(5,6),(6,7),(7,8)] 分类: python 2013-02-20 13:25 246人阅读 评论(1) 收藏
- CWnd *和HWnd转换 分类: VC++ 2013-11-08 09:28 456人阅读 评论(0) 收藏
- 核心编程随笔2 分类: VC++ 2013-09-28 08:43 518人阅读 评论(0) 收藏
- select(Linux 编程) 分类: VC++ arm-linux-Ubuntu 2014-06-10 19:03 477人阅读 评论(0) 收藏
- Python 中的 socket 编程 分类: socket 2013-08-10 17:17 377人阅读 评论(0) 收藏
- 核心编程随笔3 分类: VC++ 2013-09-28 08:43 487人阅读 评论(0) 收藏
- Linux 下的Bluetooth 架构 分类: Android驱动 2012-03-16 11:07 492人阅读 评论(0) 收藏 举报 实战Linux Bluetooth编程(一) 协议栈概述
- DirectShow基础编程 最简单transform filter 编写步骤 分类: DirectX 2014-10-25 15:03 462人阅读 评论(0) 收藏
- 【原创】《Linux高级程序设计》杨宗德著 - Linux多线程编程 - 线程概念及创建线程 分类: Linux --- 应用程序设计 2014-11-19 17:31 82人阅读 评论(0) 收藏
- 核心编程6——线程 分类: VC++ 2013-09-29 08:43 521人阅读 评论(0) 收藏