编程算法基础-2.3进制转换

2.3进制转换

使用int存一个整数时。内存中是用二进制存储的,当要显示的时候。用十进制显示。

随意进制间的转换

n进制转m进制

String s = “2001201102”

3进制转换为5进制

先转换为2进制。再转换为5进制

/*
随意进制间的转换
n进制转m进制
String s = “2001201102”
3进制转换为5进制

先转换为10进制,再转换为5进制
*/

package BinaryTrans;

public class NToM {
    public static void main(String[] args) {
       String s = "2001201102";//三进制的一个串
       int STARTSystem = 3;
       int ENDSystem = 5;

       //把三进制的串转换为真值,而且用十进制显示
       int n = 0;
        for(int i=0;i<s.length();i++){
           char c = s.charAt(i);
           n = n*STARTSystem + (c -‘0‘);//将三进制转换为十进制,十位:以一当三
       }

    /*  n=14235;
       n % 10 -->5
       n = n/10;
       n % 10 -->3
       n = n/10
       ......*/
       String s2 = "";
       while(true){
           s2 = n%ENDSystem + s2;//五进制转换
           n = n/ENDSystem;
           if(n==0) break;
       }
       System.out.println(s2);
    }
}
2244434

Excel单元格转换

Excel 单元格地址有两种格式:

普通格式,如:A5, BC12

相应的RC格式:R5C1, R12C55

显然,RC格式是直接给出行号和列号

请编程在两种地址格式间转换。

/*
Excel单元格转换
Excel 单元格地址有两种格式:
普通格式。如:A5, BC12
相应的RC格式:R5C1, R12C55
显然。RC格式是直接给出行号和列号
请编程在两种地址格式间转换。
*/
public class ExcelTranslation {
    public static void main(String[] args) {
       String s = "BC12";
       System.out.println(s);
       System.out.println(normalToRC(s));

       String s2 = "R5C1";
       System.out.println(s2);
       System.out.println(RCToNormal(s2));
    }

    //RC模式转为普通模式
    public static String RCToNormal(String s){
       s=s.substring(1);//将开头的R去掉
       String ss[] = s.split("C");//用C切割串
       int column = Integer.valueOf(ss[1]);//将列号转换为真值(十进制)
       String s2 = "";
       while(true){
           s2 = (char)(column%26 + 64) + s2;//转回26进制。输出char类型字母
           column = column/26;
           if(column==0) break;
       }
       String result = s2+ss[0];
       return result;
    }

    //普通模式转为RC模式
    public static String normalToRC(String s){
       int start_digit = 0;//数字的初始位置
       for(int i=0;i<s.length();i++){//遍历串,找到切割点
           if(Character.isDigit(s.charAt(i))){//得到出现数字的位置i
              start_digit=i;
              break;//跳出,避免第二次又出现数字
           }
       }
       String column = s.substring(0, start_digit);//得到字母,即列号(二十六进制)
       String row = s.substring(start_digit);//得到数字,行号

       //将二十六进制转换为十进制
       int n=0;
       for(int i=0;i<column.length();i++){
           char c = column.charAt(i);//得到每个字母
           n = n*26 + (c-64);//将二十六进制转换为十进制,‘A‘-64=1
       }
       String resultRC = "R"+row+"C"+n;
       return resultRC;
    }
}
BC12
R12C55
R5C1
A5
时间: 2024-08-09 06:35:04

编程算法基础-2.3进制转换的相关文章

计算机基础-1(进制转换)

信息的编码 (ASCII)    分为七位和八位     七位的 共128    八位的 256   考的重点是七位的. 空格 32 '0' ~ '9' 48~57 'A' ~ 'Z' 65~90 'a' ~ 'z' 97~122 数字(10个)+字母(52个)+标点(33个)=95  (可打印) +33(控制码 如空格)  =128   (不可打印) 进制转换  二进制.八进制.十六进制.十进制转换 将二进制.八进制.十六进制转换为十进制 二进制.八进制和十六进制向十进制转换都非常容易,就是“

一、基础部分-1.进制转换

一.计算机为啥使用二进制? 参考:https://www.zhihu.com/question/20830886 (简单易懂) 二.Python进制转换 1. 进制表示 2进制 01 8进制 01234567 10进制 0123456789 16进制 0123456789ABCDEF 2. 二进制转换函数 2进制-->10进制: #使用int函数 >>> int("11111111",2) 255 2进制-->8进制: #使用oct函数 >>&

1、C#基础整理(进制转换的方法)

进制 二进制转换为十进制(展权相加法) 110101 =1*2^5+1*2^4+0*2^3+1*2^2+0*2^1+1*2^0 1.  写2 2.  标指数(从右到左) 3.  乘系数(一一对应) 4.  相加 十进制转二进制(除权取余) 除2到商零为止,从下到上取余数   简单法:……8421   十六进制的表达 0123456789ABCDEF   八进制.十六进制与十进制的转换同二进制与十进制 八进制的表示方法o253,十六进制的表示方法ox11   二进制转八进制 ex.11101101

【搬砖】安卓入门(2)- Java开发编程基础--进制转换和运算符

02.01_Java语言基础(常量的概述和使用)(掌握) A:什么是常量 在程序执行的过程中其值不可以发生改变 B:Java中常量的分类 字面值常量 自定义常量(面向对象部分讲) C:字面值常量的分类 字符串常量        用双引号括起来的内容 整数常量        所有整数 小数常量        所有小数 字符常量        用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号 布尔常量        较为特殊,只有true和false 空常量        null(数组

超长整数的基础运算 算法实现之进制转换篇

十进制转二进制 由于单个"位"采用的是216-1作为理论最大值,因此在本次大整数的表示过程中每个类似"十进制"位可采用16位的二进制来表示,符号位单独表示. "十"进制转换成二进制,实际上是经过中间状态(即大整数的逻辑存储表示)转化.在转换过程中大整数的每个"位"无耦合,不存在依赖关系,因此实现方式较为单一,即采用十进制数进行不断除2得余数的方式组成二进制的结果.需要特别注意的是二进制字符串不足16位的需要在高位用"

Java基础笔记(3) 进制与进制转换

---恢复内容开始--- 进制 在一般生活中,我们一直在应用的十进制,就是逢十进一,而今天我们要接触的是,计算机编程常用的进制!首先我们要知道,计算机内部运算采用的是二进制,也就是逢二进制! 1.什么是二进制? 就是只有0 和 1  每当遇到值为2 就向前进一位. 2.为什么计算机内部是二进制? 这就要从硬件说起,计算机是如何储存数据的,要知道我们网络传输,就是你要和别人一起聊天,你们隔着很远,到底是怎样才能让他收到你的聊天内容? 有一根网线还能说过去,毕竟网线链接终端我们也不知道连到哪,保不齐

任意进制转换算法

任意进制转换算法 N年没有写博客,发个进制转换的玩下,支持负数:功能属于简化版的 Convert.ToInt32 ,特点是: 1.任意位,如:0,1(二进制),0...7(八进制),0...9,A...F(16进制),0...N(N进制),或者是:[email protected]#$%^&*(8进制,字符符号),也可以是中文. 2.8 byte 最大长度. 3.C#源码. 最近写markdown格式习惯啦,cnblogs啥时候全改掉算了,别用这个htmleditor算了. 先说明下进制转换的基

黑马程序员---C基础6【#include指令】【模块化编程】【计算机的进制】【原码、反码、补码】【位运算符】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- [#include指令] 1.文件包含命令的格式: 1)#include “”双引号是包含用户自己书写定义的文件(可以是头文件,也可以是普通的文件)#include是预处理指令,不是一个语句,不需要加封号 2)#include<>   包含一个系统(编译器自带)的头文件 2.文件包含的实质: 把指定文件内容插入该命令行位置取代该命令行, include不一定非要写在第一行: 3.includ

夯实基础——P2084 进制转换

题目链接:https://www.luogu.org/problem/P2084 P2084 进制转换 题目背景 无 题目描述 今天小明学会了进制转换,比如(10101)2 ,那么它的十进制表示的式子就是 : 1*2^4+0*2^3+1*2^2+0*2^1+1*2^0, 那么请你编程实现,将一个M进制的数N转换成十进制表示的式子. 注意:当系数为0时,该单项式要省略. 输入格式 两个数,M和N,中间用空格隔开. 输出格式 共一行,一个十进制表示的式子. 输入输出样例 输入 #1复制 2 1010