【实操】进制转换:除基倒取余法

一、原理:除基倒取余法

以10进制转2进制为例:输入一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2...依次循环,直到商为0结束,把余数倒着依次排列,就构成了转换后的二进制数。

所有进制之间的转换都是如此,2可以换成任何数字。十进制转二进制、八进制、十六进制、64进制,全部如下。

二、具体的JAVA实现:

2.1 10进制数字转n进制:

public class Main {

    public static void main (String[] args) {
        int n = 64;//需要转换的数字
        int m = 5; //转换的进制(如果大于10,需考虑使用其他字符表示)

        int t = 0;  //用来记录位数
        int bin = 0; //用来记录最后的二进制数
        int r = 0;  //用来存储余数
        while(n != 0){
            r = n % m;
            n = n / m; //注意:n为int,可以保证其肯定是一个整数,且是进制转换需要的整数
            bin += r * Math.pow(10,t); //pow函数:10的t次方
            t++;
        }
        System.out.println(bin);
    }
}

2.2 n进制数字转10进制:

public class Main {

    public static void main (String[] args) {
        int n = 224;//需要转换的数字
        int m = 2; //进制
        int des = 0; //储存转换后的结果

        String s = new StringBuilder(String.valueOf(n)).reverse().toString();  //reverse使字符串倒序
        for (int i = 0 ;i<s.length();i++){
            int charIndex = s.charAt(i)-‘0‘;
            des += charIndex*Math.pow(m, i);
        }

        System.out.println(des);
    }
}

原文地址:https://www.cnblogs.com/buwuliao/p/9196544.html

时间: 2024-11-10 07:02:39

【实操】进制转换:除基倒取余法的相关文章

k进制正整数的对k-1取余与按位取余

华电北风吹 天津大学认知计算与应用重点实验室 日期:2015/8/24 先说一下结论 有k进制数abcd,有abcd%(k?1)=(a+b+c+d)%(k?1) 这是由于kn=((k?1)+1)n=∑ni=0Cin(k?1)i 因此kn 对(k-1)取余的话为1 比如10进制1425%9=3,(1+4+2+5)=12%9=3. 这个性质眼下我在两个地方见到了 (一)算法导论第11章讲散列表的时候,除法散列的时候 h(k)=kmod m 对于m的选取,若m取2p或者2p?1 均是不合适的选择,前者

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

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

03 php 数据类型:整数,进制转换,浮点,字符,布尔,数组,空类型,类型转换,算术运算,比较运算

03 数据类型:整数,进制转换,浮点,字符,布尔,数组,空类型,类型转换, 算术运算,比较运算,逻辑运算,短路现象, 三目运算符,字符型运算: 数据类型 整体划分 标量类型: int, float, string, bool 复合类型: array,     object 特殊类型: null,     resouce 整数类型int, integer 3种整数表示法 十进制写法:123: $n1 = 123; 八进制写法: 0123 $n2 = 0123; 十六进制写法: 0x123 $n3

计算机进制转换

一.计算机只认识0和1,二进制. 二.2进制转换成 8进制 和 16进制,如下图: 二进制 > 八进制 :  研究上图发现,3位最高二进制可以用来表示一位八进制.所以,将二进制分解每3位,不够前面补0,然后每3位转换为10进制,顺序排列即可. 二进制 > 十六进制  :4位最高二进制可以用来表示一位十六进制.所以,将二进制分解每4位,不够前面补0,然后每4位转换为10进制,超过9用字母表示即可.顺序排列即可. 如下: 二进制 > 十进制:   11001001 = 2^7+2^6+2^3

进制转换与原码补码

进制也就是进位制,是人们规定的一种进位方法. 我们先来回想一下生活中的十进制: (1) 数码: 指集合论中刻画任意集合所含元素数量多少的一个概念 十进制的基本符号是:0.1.2.3.4.5.6.7.8.9:我们把这些称为十进制的数码:也就是基本符号,所有的十进制都是有这十个数码组成的.每位在加时都是"逢十进一". (2) 位权: 数制中每一固定位置对应的单位值称为位权 那么大家考虑一个问题,说一个十进制数,已知第四位是5,其它位都是0,那么这个数是几?答案:5000,怎么算的是5*10

C#——进制转换!

进制转换 No.1 其他进制转十进制——按权展开相加法   即: 由于101.11(10),可写成1X102+0X101+1X100+1X10-1+1X10-2,即(以10为底的乘幂展开式)称按权展开式, 其中:101.11称为“数码” 数制中的(10)称为“基数” 数码中每个位数所具有的值称为“权” 那么其他进制也可写成按权展开式 如:对数字“101.11”的不同进制记数方式为~ 十进制表示为:  101.11(10) 二进制表示为:  101.11(2) 八进制表示为:  101.11 (8

用栈实现进制转换

“除基取余 + 顺序栈”  实现十进制数转换成其他进制数,代码如下: #include <stdio.h>#define MAX_L 100 //定义栈typedef struct {    int data[MAX_L];            int top;            }Stack; //进制转换//origin是待转数,right是要转的目的数的权void Convert(int origin, int right)  {    Stack s;        //初始化栈

进制转换、基础语音、语句的总结与练习

C#阶段总结 一.进制转换 计算机中采用的是二进制,因为二进制具有运算简单,易实现且可靠,为逻辑设计提供了有利的途径.节省设备等优点. 我们常用的进制还有八进制.十进制.十六进制,其特点是: (1)逢N进一  N是每种进位计数制表示一位数所需要的符号数目为基数. 二进制:逢二进一,借一当二 八进制:逢八进一,借一当八 十六进制:逢十六进一,借一当十六 (2)数制转换  不同进位计数制之间的转换原则:不同进位制之间的转换是根据两个有理数如相等,则两数的整数部分和分数部分一定分别相等的原则进行的.也

hdu 2031 进制转换 (java)

问题: 在c中字符间转化可以以char a=char(b+5);的方式,但在java中却没用,这里给出一种转化方法:int c=b+5:char a=char(c): String字符串,倒过来: StringBffer str=new StringBuffer(s); s=str.reverse().toString(); 在测试时加入了一些输出语句,和一些小改动,在输出时忘记改回来,导致一直不通过,以后请注意!!! 进制转换 Time Limit: 2000/1000 MS (Java/Ot