16转10

  • 用竖式计算:

    16进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方
  1. 0位: 5 * 16^0 = 5
  2. 1位: F * 16^1 = 240
  3. 2位: A * 16^2= 2560
  4. 3位: 2 * 16^3 = 8192

-代码

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. int main() {
  5. string s;
  6. while(cin>>s){
  7. int length=s.length();
  8. long long sum=0;
  9. for(int x=0;x<length;x++){
  10. if(s[x]>='0'&&s[x]<='9'){
  11. sum=(s[x]-'0')+16*sum;
  12. }else{
  13. sum=(s[x]-'A'+10)+16*sum;
  14. }
  15. }
  16. cout<<sum;
  17. }
  18. return 0;
  19. }

16转2

  • 由于在二进制的表示方法中,每四位所表示的数的最大值对应16进制的15,即16进制每一位上最大值,所以,我们可以得出简便的转换方法,将16进制上每一位分别对应二进制上四位进行转换
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. int main() {
  5. string s;
  6. while(cin>>s){
  7. int length=s.length();
  8. long long sum=0;
  9. int answer[40];
  10. int cot=0;
  11. for(int x=0;x<length;x++){
  12. int y=2;
  13. if(s[x]>='0'&&s[x]<='9'){
  14. y=(s[x]-'0');
  15. }else{
  16. y=(s[x]-'A'+10);
  17. }
  18. do{
  19. answer[cot++]=y%2;
  20. y/=2;
  21. }while(y!=0);
  22. }
  23. for(int i=0;i<cot;i++){
  24. cout<<answer[cot-1-i];
  25. }
  26. }
  27. return 0;
  28. }

2转16进制

  • 16进制就有16个数,015,用二进制表示15的方法就是1111,从而可以推断出,16进制用2进制可以表现成00001111,顾名思义,也就是每四个为一位

  1. 0 0 1 1| 1 1 0 1
  2. 左半边=2+1=3 右半边=8+4+1=13=D
  • 代码

  1. #include <iostream>
  2. #include <string>
  3. #include <algorithm>
  4. using namespace std;
  5. int main() {
  6. string s;
  7. while(cin>>s){
  8. int length=s.length();
  9. string s2;
  10. int pro=1,sum=0,cot=0;
  11. for(int x=length-1;x>=0;x--){
  12. sum+=(s[x]-'0')*pro;
  13. pro=pro*2;
  14. if(x%4==0){
  15. if(sum>=10){
  16. s2+=sum-10+'A';
  17. }else{
  18. s2+=sum+'0';
  19. }
  20. pro=1;
  21. sum=0;
  22. }
  23. }
  24. reverse(s2.begin(),s2.end());
  25. cout<<s2;
  26. }
  27. return 0;
  28. }

10进制转16进制

-代码

  1. #include <iostream>
  2. #include <string>
  3. #include <algorithm>
  4. using namespace std;
  5. int main() {
  6. long long s;
  7. while(cin>>s){
  8. char ans[20]={0};
  9. int cot=0;
  10. do{
  11. if(s%16>=10){
  12. ans[cot++]=s%16-10+'A';
  13. }else{
  14. ans[cot++]=s%16+'0';
  15. }
  16. s/=16;
  17. }while(s);
  18. for(int i=0;i<cot;i++){
  19. cout<<ans[cot-1-i];
  20. }
  21. }
  22. return 0;
  23. }

十六进制转八进制

  • 一开始想的是把16进制先转化为10进制,因为从10进制转化为8进制很容易。但是题目中输入的16进制位数规模大,不超过100000位,肯定不能化为10进制数。解法是先把16进制化为四个2进制数,然后三个二进制数一组再化为8进制。 注意 39(16进制)--〉0011 1001 (2进制) --〉111 001(8进制),是从二进制的低位开始三个一组来计算。
  • 代码

C/C++<算法>进制转换超详细的更多相关文章

  1. <算法>进制转换超详细

    16转10 用竖式计算: 16进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方 第0位: 5 * 16^0 = 5 第1位: F * 16^1 = 240 第 ...

  2. 结合stack数据结构,实现不同进制转换的算法

    #!/usr/bin/env python # -*- coding: utf-8 -*- # learn <<Problem Solving with Algorithms and Da ...

  3. lua之m进制转换为n进制-任意进制转换算法

    够无聊的写这个,为防止需要的人也无聊一遍,写个吧 算法有n种,但是,咱们一种就够用了 --数组倒序排列 local function orderByDesc( input ) local output ...

  4. Java实现 蓝桥杯VIP 算法训练 ALGO-16进制转换

    算法训练 进制转换 时间限制:1.0s 内存限制:256.0MB 问题描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的 ...

  5. Java实现 蓝桥杯VIP 算法提高 进制转换

    算法提高 进制转换 时间限制:1.0s 内存限制:256.0MB 问题描述 程序提示用户输入三个字符,每个字符取值范围是0-9,A-F.然后程序会把这三个字符转化为相应的十六进制整数,并分别以十六进制 ...

  6. ACM2031_进制转换(使用了递归,代码超少的啦!!)

    进制转换 Problem Description 输入一个十进制数N,将它转换成R进制数输出.   Input 输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R& ...

  7. Java实现 蓝桥杯VIP 算法训练 ALGO-85进制转换

    问题描述 编写一个程序,输入一个二进制的字符串(长度不超过32),然后计算出相应的十进制整数,并把它打印出来. 输入格式:输入为一个字符串,每个字符都是'0'或'1',字符串的长度不超过32. 输出格 ...

  8. 学习python第五天进制转换

    6.进制之间的转换(重要) 二进制:满二进一 范围:0.1符号:0b例如:0b10...[注意]计算机只能识别二进制数据 八进制:满八进一 范围:0~7符号:0o例如:0o66 十进制:满十进一 范围 ...

  9. 一起talk C栗子吧(第七回:C语言实例--进制转换)

    各位看官们.大家好,从今天開始.我们讲大型章回体科技小说 :C栗子,也就是C语言实例. 闲话休提, 言归正转.让我们一起talk C栗子吧! 看官们.上一回中咱们说的是生成随机数的样例.这一回咱们说的 ...

随机推荐

  1. listen 73

    Give Time to Feel Less Time-Squeeze Meetings, calls, kids, dogs, errands, exercise—and all those ema ...

  2. listen 62

    The Hangover I'm never drinking again. And this time I mean it! Anyone who's suffered through a bad ...

  3. codeforces 651E E. Table Compression(贪心+并查集)

    题目链接: E. Table Compression time limit per test 4 seconds memory limit per test 256 megabytes input s ...

  4. OpenCV——PS滤镜之 波浪效果 wave

    // define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include < ...

  5. Windows下使用vim编写代码,使用nmake编译代码,使用vs来调试代码

    1.编写代码 2.编写Makefile,如果要调试, 2.1.需要在编译的时候加上/Zi ( Generates complete debugging information),编译由cl.exe来完 ...

  6. Vue cli项目开启Gzip

    目录 安装 compression-webpack-plugin 更改配置文件 服务器开启gzip功能 安装 compression-webpack-plugin 建议安装v1.1.11版本,最新版本 ...

  7. [转载]Windows网络编程系列教程之四:Select模型

    原文:http://www.51see.com/asp/bbs/public/bp_show.asp?t_id=200308131152297103 讲一下套接字模式和套接字I/O模型的区别.先说明一 ...

  8. SimpliciTI使用

    SimpliciTI组网过程介绍 1.SimpliciTI支持点对点和星形的网络拓扑结构.   下面介绍以AP为中心的SimpliciTI网路协议的星形拓扑结构通信过程 1)当ED节点上电之后就扫描信 ...

  9. MySQL锁之一:锁详解

    一.    什么是死锁 死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等的进 ...

  10. 有关mapminmax的用法详解

    几个要说明的函数接口: [Y,PS] = mapminmax(X) [Y,PS] = mapminmax(X,FP) Y = mapminmax('apply',X,PS) X = mapminmax ...