蓝桥杯--进制转换--10进制与26进制转换中的问题

  • 一、问题描述
    • 1.字母编号序列LANQIAO表示的数为多少?
    • 2.2021用字母怎么表示?
  • 二、问题分析
    • 2.1规律解析
    • 2.2 十进制<---->二、八、十六进制
    • 2.3二进制<---->八进制、十六进制
  • 三、26进制转化为10进制
  • 四、10进制转化为26进制
  • 五、10进制转化26进制中出现的问题及方法
    • 5.1问题提出
    • 5.2 问题解决
  • 六 java代码

一、问题描述

题目描述:A=1, B=2, C=3,…Z=26, AA=27, AB=28, AC=29…AZ=52, BA=53,… ZZ=702, …
以此类推。按照这个规律请你请写出函数判断:

1.字母编号序列LANQIAO表示的数为多少?

2.2021用字母怎么表示?

二、问题分析

2.1规律解析

按照给定的表示方法,可以知道这是进制转化的题目,将10进制和26进制进行相互转化,我们已经熟悉10进制和2、8、16进制之间的相互转化。首先,给出基本的进制转化方法。

2.2 十进制<---->二、八、十六进制

  • 一、10进制化2进制: 整数采用除基数再倒取余数法。小数部分采用乘基数再取整数法。
  •   ①.正整数转2进制--->除2取余,然后倒序排列,高位补零。
    
  •                    将正的十进制数除以二,得到的商再除以二,依次类推直到
    
  •                    商为0或1时为止,然后在旁边标出各步的余数.最后对余数倒序。
    
  •                   42转化为2进制为(8字节):00101010
    
  •  ②.负整数转2进制---->先将正整数部分化为2进制,再取反,再加1;
    
  •                  -42转化为2进制(8字节):
    
  •                  1.正整数部分转化 00101010,
    
  •                  2.转化结果取反   11010101,
    
  •                  3.转反结果加1    11010110,
    
  • ③.小数转2进制---->先将整数部分化成2进制,再按照小数部分化为2进制。
  •         对小数点以后的数乘以2,取结果的整数部分(不是1就是0),然后再用小数部分再乘以2,
    
  •         再取结果的整数部分……以此类推,直到小数部分为0或者位数已经够了就满足。
    
  •          最后将小数的整数部分和小数部分连在一起,注意整数部分是倒序,小数部分是正序。
    
  •          0.125转化为2进制(8字节): 0.001
    
  •          5.125转化为2进制(8字节):
    
  •                          1. 5转化为2进制:101
    
  •                          2. 0.125转化为2进制:001
    
  •                          3. 5.125转化为2进制:101.001
    
  • 二、2进制转化为10进制:
  •     ①.2进制正整数转化为10进制(补齐后首位为0)
    
  •          按照基数的顺序从右边指数为0开始相乘再相加
    
  •          1010 = 1*2*2*2 + 0*2*2 + 1*2 +0*1 = 10
    
  •      ②.2进制负整数转化为10进制(补齐后首位为1)
    
  •           补齐字节后首位为1,先取反再换算。
    
  •           转化11101011: 1.取反 -00010100   2. 换算 -20
    
  •    ③.2进制小数转化为10进制:小数部分从左边往右(基数的指数部分:-1,-2,-3.....)
    
  • 三、对于8进制和16进制乃至26进制的转化方法都是一样:
    •  整数采用除基数再倒取余数法。小数部分采用乘基数再取整数法。
      

2.3二进制<---->八进制、十六进制

  • 一、2进制化为8、16进制
  •  将一个二进制数化为8进制时候,在二进制中连续取三位数字,分别化为整数,所得结果即为8进制数。
    
  • 将一个二进制数化为16进制时候,在二进制中连续取四位数字,分别化为整数,所得结果即为16进制数。
    
  •  11001化为8进制数:从最右边开始以3位为一组,不够三位补0.
    
  •  001:1
    
  •  011:3
    
  •  结果为:31
    
  •  111001.10101化为8进制数:从小数点开始往左右以3位为一组,不够三位补0.
    
  •  0.10101:0.52
    
  •       101:5
    
  •       010:2
    
  •      001:1
    
  •      111:7
    
  •  结果为:71.52
    
  • 一、8、16进制化为2进制
  •  将一个8进制化为2进制数时候,在8进制中每一个数值化为三位数字,所得结果即为2进制数。
    
  •  将一个16进制化为2进制数时候,在16进制中每一个数值化为四位数字,所得结果即为2进制数。
    
  •  42(8进制)化为2进制:100010
    
  •  42(16进制)化为2进制:01000010
    

三、26进制转化为10进制

  •  A=1,B=2,C=3....Z=26,AA=27,AB=28...AZ=52,BA=53,...ZZ=702...
    
  •  将输入的26进制取出每一个位的值,然后乘上26的指数(指数从右到左:0,1,2,3,4...)
    
  •  26进制ZZ化为10进制:Z*26¹ + Z*26° = 26*27  = 702
    
  •  26进制ZBC化为10进制:Z*26²  + B*26¹+ C*26° =  17576+52+3 = 17631
    

四、10进制转化为26进制

比如给定的一个数53、2021,现在将两个十进制数化为26进制的字符表示:

十进制转化为26进制的方法和十进制转化为2、8、16进制方法十类似的:除以基数取余再倒序。

五、10进制转化26进制中出现的问题及方法

5.1问题提出

上述给出了26进制转化为10进制和10进制转化为26进制的一般方法,但是对于10进制转化为26进制而言,会出现特殊情况。在10进制转化为2、8、16进制时候,最小是从0开始的。比如二进制的01,八进制的01234567…,十六进制的0123456789A…都是从0开始,而26进制是从A(1),B(2)开始的,就会出现一个问题:当遇到26的整数倍时候余数为0,应该怎么表示?

5.2 问题解决

比如这里的52,用26进制表示应该为:AZ,但是按照一般的转换方法却不能转化到AZ。
通过观察Z(26)、AZ(52)、BZ(78)、ZZ(702)、等含有"Z"的进制关系可以得到:
设m为整除26的余数,如果余数等于0,那么令m=26,同时将当前的商减1;之后在进行相除取余…

例如702:ZZ

只要在循环的时候判断当前的余数,然后给出条件设置就满足了。

六 java代码

下面给出了两个方法,分别十将十进制转化为26进制,将26进制转化为10进制。

class Transform {/*** @param num  表示输入的十进制数值* @return     输出一个字符串表示26进制数值。*/public String toChar(int num) {  //转化为26进制String s = "";int n=num,r=num,m;boolean flag = true;while(flag){//循环求余数n = r;m = n%26;r = n/26;//判断是否倍26整除if(m==0) {m=26;r = r-1;}//将26进制余数化为字符表示s = (char)(m+64)+ s;if(r==0)break;}return s;}/*** @param s  表示传入的大写字母,这里以字符串表示* @return   返回26进制的大写字符表示的十进制数*/public int toNum(String s) {    //转化为10进制int num = 0;for(int i=s.length()-1,j=0;i>=0;i--,j++) {  num = (int) (num + (s.charAt(i)-64) * Math.pow(26, j));//大写字母A的ascall码为65,将A转化为1,B转化为2....}return num;}
}

测试结果为:

参考:
链接: link.

10进制与26进制转化相关推荐

  1. leetcode 168. Excel表列名称(10进制转26进制)

    题目 思路 10进制转26进制 经过分析,我们不难发现,这是一个26进制和十进制相互转换的问题.序列A-Z依次对应序列1-26.进制转换的基本办法就是"取余法",换算规则如下: A ...

  2. python 数字转化excel行列_Python 3 实现数字转换成Excel列名(10进制到26进制的转换函数)...

    背景: 最近在看一些Python爬虫的相关知识,讲爬取的一些数据写入到Excel表中,当时当列的数目不确定的情况下,如何通过遍历的方式讲爬取的数据写入到Excel中. 开发环境: Python 3  ...

  3. 数字 和 大小写字母之间的转换 10进制和26进制之间的转换

    /** 数字转大写字母(26进制)1->A 2->B* @since JDK 1.8 */public static String numCovertLetter(int num) {if ...

  4. 关于进制转换问题,10进制转换为26进制;

    目前有一个数N,想用AZ组合表示出来,即 1 = A,2 = B,3 = C,26 = Z,27 = AA,28 = AB,等等. 首先考虑二进制,二进制由0和1组成,10进制转换为二进制时候,用除以 ...

  5. Java 将26进制数据转为10进制、十进制数据转为其它进制

    1.十进制数据转为其它进制 /*** 进制转换* @param data 十进制数据* @param radix 待转换的进制* @return 转换后的字符串显示*/private String t ...

  6. python 数字转化excel行列_Python实现excel的列名称转数字、26进制(A-Z)与10进制互相转换...

    Python实现excel的列名称转数字.26进制(A-Z)与10进制互相转换 sequence = list( map( lambda x: chr( x ), range( ord( 'A' ), ...

  7. 进制转换问题---例如把26进制转为10进制

    问题:a-z表示0-25,代表26进制,现在要求把该26进制转为10进制   例如: 输入:ba 输出:26 先看如何把十六进制怎么转换成十进制 它可以表示为:2*10^3+0*10^2+3*10^1 ...

  8. C# 中2,10,16进制及其ASCII码之间转化

    转载连接: http://blog.csdn.net/pengfeihe0123/article/details/7278221 C# 中2,10,16进制及其ASCII码之间转化           ...

  9. 字符26进制 与 10进制【可以这样来理解】

    生活,应用中,会遇到一类极有规律的字符序列,像这样: A B C D - AA -- AZ -- AAA -- ZZZ -- 一琢磨,跟数制很像,但又不全是,那么列出一部分对比看看 于是,不妨使 A- ...

最新文章

  1. python 数据库查询结果邮件提醒_Python实现的查询mysql数据库并通过邮件发送信息功能...
  2. js -“=”“==”和“===”的区别
  3. HashMap和HashSet的区别
  4. cent os 6 fdisk fat32
  5. python银行系统-python 银行系统
  6. ISO9000管理体系认证申请书
  7. 数学奥赛用不用计算机,报考自招必看!五大学科竞赛利弊详解,到底哪科最适合你?...
  8. Spring集成–从头开始应用程序,第1部分
  9. [react] 你有使用过formik库吗?说说它的优缺点
  10. “约见”面试官系列之常见面试题之第九十二篇之created和mounted区别(建议收藏)
  11. Zabbix4.2监控nginx状态
  12. 算法笔记_面试题_数组/链表/跳表/各种数据结构复杂度对比
  13. 手电筒安卓_王思聪吃热狗数字时钟app安卓android苹果ios
  14. File.ReadAllText读取文件中文乱码
  15. 微软又犯二了!WebApi中不支持MVC的OutputCache
  16. 高性能JSON框架之FastJson的简单使用
  17. 深入探讨PageRank(四):PageRank的危机及搜索引擎的未来
  18. 分水岭算法(学习笔记)
  19. 数据库选型-国产数据库如何满足你的需求
  20. UltraEdit注册码

热门文章

  1. 云天励飞人脸识别技术助力央视春晚会场安保
  2. React Native之常用第三方库
  3. 如何用 Python 生成炫酷二维码及解析
  4. 中心极限定理+拉普拉斯定理+大数定理+切比雪夫不等式
  5. 线性代数学习笔记——行列式的性质及拉普拉斯定理——5. 行列式的性质4
  6. Watch Out!(中文名:贱鸟跳跳)
  7. 再见!Eclipse
  8. as使用自动导入v7包,一直没使用as创建过项目,哎
  9. 关于“物理地址=段基址x16+段内偏移地址”
  10. nohup: ignoring input and appending output to 'nohup.out'