精华内容
下载资源
问答
  • Java十进制转进制算法 一、编程思路 可以运用简单的数学的计算的方法。如下 这张图大家应该都不陌生,10(例子中的10)一直除以2,余数写在右面那一列,如果被整除右面写0,如果没有别整除,写他的余数,这样...

    Java十进制转二进制简单算法

    一、编程思路

    可以运用简单的数学的计算的方法。如下
    在这里插入图片描述
    这张图大家应该都不陌生,10(例子中的10)一直除以2,余数写在右面那一列,如果被整除右面写0,如果没有别整除,写他的余数,这样反反复复的除以2。除到除不了了为止,最后把余数倒着写出来,这就是高中老师教给我们的进制转换算法
    所以从这个例子可以看出的条件:
    1.需要我们(用户)从键盘获取一个十进制的数(用到Scanner扫描器)
    2.需要一直除以二(用到循环while或for)。
    3.我们最后的结果只要余数,所以你们会想到%号,可是大家别忘了,除完的结果还要继续除,所以还要用到/号。
    4.他的结果也很特别需要倒着输出。(用到数组来储存,然后在倒着输出)。

    二、导入Scanner

    在这里插入图片描述

    三、代码

    代码如下:

    	Scanner sc=new Scanner(System.in);//创建一个扫描器对象
    	int a;//创建一个变量a
    	int b[] = new int[32];//创建一个容量为32的一个数组;
    	int count = 0;//创建一个数组计数器
    	System.out.println("请输入一个十进制数:");//提示用户操作
    	a = sc.nextInt();//把扫描器输入的十进制值赋给a
    	while (a > 0) {
    	//因为上面我们说了二进制需要我们倒着写,所以干脆就把第一个余数存到数组最后一位
    		b[31 - count] = a % 2;
    		//上面算的是余数,a/=2是为了算下次a的值
    		a /= 2;
    		count++;//数组计数器
    	}
    	System.out.print("转换二进制为:")
    	for (int i = 0; i < b.length; i++) {
    		System.out.print(b[i]);//因为上面是倒着输入了,所以我们只需要用for正在输出就行了
    		if ((i + 1) % 8 == 0) {
    			System.out.print("|");//为了美观创建一个分界线
    		}
    		}
    

    结果:

    在这里插入图片描述

    #结论
    1.需要注意光用一个/或%都是不行的,并且在这个代码的循环语句里的逻辑必须是先算取余,再算除,否则就会落下第一余数。
    2.我刚采用的是倒着把余数往数组里输入,正着输出结果,当然也可以正着输入余数,倒着输出结果。

    展开全文
  • java进制转换(十进制转八进制,十进制转二进制,十六进制八进制) 这几天在复习C语言的数据结构栈和队列那一章的时候,看到利用栈的特性FILO实现的进制转换十分简洁 想起了java中实现栈的操作十分方便(不用...

    java进制转换(十进制转八进制,十进制转二进制,十六进制转八进制)

    这几天在复习C语言的数据结构栈和队列那一章的时候,看到利用栈的特性FILO实现的进制转换十分简洁

    想起了java中实现栈的操作十分方便(不用自己写.h文件,内部util.Stack包已经封装好)

    所以用这个来写一个进制转换作为记录

    十进制怎么转化为二进制呢?

        public void Dex2Bin(int n){
            int x;
            Stack<Integer> stack = new Stack<>();
            while(n>0){
                x=n%2;
                stack.push(x);
                n/=2;
            }
            while(!stack.empty()){
                int num = stack.pop();
                System.out.format("%d",num);
            }
        }

    首先是获取被转换的数据n,创建一个栈,new即可,自动初始化(对应C语言中的top指针指向base)

    当n>0的时候,不断的:

    • 除以2取余 x=n%2,取余的数字压栈
    • 数字除以2取整 n/=2

    这样就完成了对一个数字进制转换的过程。

    输出的时候只要对stack不断的pop即可

    同理十进制转八进制也是如此

        public void Dex2Oct(int n){
            int x;
            Stack<Integer> stack = new Stack<>();
            while(n>0){
                x=n%8;
                stack.push(x);
                n/=8;
            }
            while(!stack.empty()){
                int num = stack.pop();
                System.out.format("%d",num);
            }
        }

    和二进制转换类似,不多赘述

    十六进制怎么转化为八进制呢?

        public void Hex2Oct(String n) {
            int hex2dex = 0;
            int reIndex = 0;
            /*十六进制转十进制*/
            for (int i = n.length()-1; i >= 0; i--) {
                if(Character.isDigit(n.charAt(i))&&
                        Integer.parseInt(String.valueOf(n.charAt(i))) >= 0 &&
                        Integer.parseInt(String.valueOf(n.charAt(i))) <= 9){
                        hex2dex += Integer.parseInt(String.valueOf(n.charAt(i))) * Math.pow(16, reIndex);
                } else {
                    switch (n.charAt(i)) {
                        case 'A':
                            hex2dex += 10 * Math.pow(16, reIndex);
                            break;
                        case 'B':
                            hex2dex += 11 * Math.pow(16, reIndex);
                            break;
                        case 'C':
                            hex2dex += 12 * Math.pow(16, reIndex);
                            break;
                        case 'D':
                            hex2dex += 13 * Math.pow(16, reIndex);
                            break;
                        case 'E':
                            hex2dex += 14 * Math.pow(16, reIndex);
                            break;
                        case 'F':
                            hex2dex += 15 * Math.pow(16, reIndex);
                            break;
                    }
                }
                reIndex++;
            }
            //十进制转八进制
            Dex2Oct(hex2dex);
    
        }

    这里说实话,我个人觉得写得很啰嗦,希望能提出改进意见,主要是在char转换位int的时候有些麻烦

    上面的算法分为两个部分:1、十六进制字符串转换为对应的十进制,完成了从字符串到数字的转换

                                           2、十进制转换为八进制

    首先是逐个解析十六进制字符串,采用倒序循环的方式。

    同时设置一个从0开始递增的辅助变量reIndex,帮助算法完成对最后一个字符的乘以16的N次方的行为。

    解析的时候,首先判断这个字符串是不是一个数字型比如‘9’:

    • 若是,对这个字符转换为数字9之后,乘以相应的16的N次方;
    • 若不是,对这个数字单独辨识,必定是ABCDEF其中一个,在对这些数字表示的十进制数值进行运算操作。

    得到十六进制转换的十进制数字之后,对这个数字进行上面已经完成的十进制转八进制的运算,只要传入数字即可获得答案。

    总结

    1. 算法特点,利用栈的特点解决进制转换很方便
    2. 转换出来的二进制没有前缀00...

     

    贴完整代码:

    样例输入:先输入十进制转换二进制的十进制数字:比如15

    转换完成之后输入一个16进制字符,转换为8进制

    import java.util.Scanner;
    import java.util.Stack;
    /**
     * Page Description:
     * User: Yelihu
     * Date: 2018-12-19
     * Time: 上午 9:16
     * Function:
     */
    public class Main {
        public void Dex2Bin(int n){
            int x;
            Stack<Integer> stack = new Stack<>();
            while(n>0){
                x=n%2;
                stack.push(x);
                n/=2;
            }
            while(!stack.empty()){
                int num = stack.pop();
                System.out.format("%d",num);
            }
        }
        public void Dex2Oct(int n){
            int x;
            Stack<Integer> stack = new Stack<>();
            while(n>0){
                x=n%8;
                stack.push(x);
                n/=8;
            }
            while(!stack.empty()){
                int num = stack.pop();
                System.out.format("%d",num);
            }
        }
        public void Hex2Oct(String n) {
            int hex2dex = 0;
            int reIndex = 0;
            /*十六进制转十进制*/
            for (int i = n.length()-1; i >= 0; i--) {
                if(Character.isDigit(n.charAt(i))&&
                        Integer.parseInt(String.valueOf(n.charAt(i))) >= 0 &&
                        Integer.parseInt(String.valueOf(n.charAt(i))) <= 9){
                        hex2dex += Integer.parseInt(String.valueOf(n.charAt(i))) * Math.pow(16, reIndex);
                } else {
                    switch (n.charAt(i)) {
                        case 'A':
                            hex2dex += 10 * Math.pow(16, reIndex);
                            break;
                        case 'B':
                            hex2dex += 11 * Math.pow(16, reIndex);
                            break;
                        case 'C':
                            hex2dex += 12 * Math.pow(16, reIndex);
                            break;
                        case 'D':
                            hex2dex += 13 * Math.pow(16, reIndex);
                            break;
                        case 'E':
                            hex2dex += 14 * Math.pow(16, reIndex);
                            break;
                        case 'F':
                            hex2dex += 15 * Math.pow(16, reIndex);
                            break;
                    }
                }
                reIndex++;
            }
            //十进制转八进制
            Dex2Oct(hex2dex);
    
        }
        public static void main(String[] args) {
            Main main = new Main();
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            //十进制转二进制
            main.Dex2Bin(n);
            Scanner sc1 = new Scanner(System.in);
            String str1 = sc1.nextLine();
            //十六进制转八进制
            main.Hex2Oct(str1);
        }
    }

     

    展开全文
  • 我们看到所转换的2进制数按底位到高位的顺序产生的,而通常的输出是从高位到低位的,恰好与计算过程相反,因此转换过程中每得到一位2进制数则进栈保存,转换完毕后依次出栈则正好是转换结果。 请实现其算法
  • Java实现算法提高十进制八进制数

    万次阅读 多人点赞 2019-06-06 21:06:38
    算法提高 十进制八进制数 时间限制:1.0s 内存限制:512.0MB 编写函数,其功能为把一个十进制数转换为其对应的八进制数。程序读入一个十进制数,调用该函数实现数制转换后,输出对应的八进制数。 样例输入 ...

    算法提高 十进制数转八进制数
    时间限制:1.0s 内存限制:512.0MB

    编写函数,其功能为把一个十进制数转换为其对应的八进制数。程序读入一个十进制数,调用该函数实现数制转换后,输出对应的八进制数。

    样例输入
    9274
    样例输出
    22072
    样例输入
    18
    样例输出
    22

    进制转换详细介绍

    import java.util.Scanner;
    
    
    public class 十进制转八进制 {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		int num = sc.nextInt();
    		String shu = Integer.toOctalString(num);
    		System.out.println(shu);
    	}
    
    }
    
    
    展开全文
  • java_十进制数转换为二进制,八进制,十六进制数的算法
  • 十进制转其他进制: //将十进制数字a成b进制数 public static void an(int a, int b) { if (a / b != 0) { an(a / b, b); } if (a % b >= 10) { System.out.print((char) ((a % b) + 55)); } else {

    话不多数,直接上代码

    十进制转其他进制:

    //将十进制数字a转成b进制数
        public static void an(int a, int b) {
            if (a / b != 0) {
                an(a / b, b);
            }
            if (a % b >= 10) {
                System.out.print((char) ((a % b) + 55));
            } else {
                System.out.print(a % b);
            }
        }

    其他进制转十进制:

    //将b进制的数字a转成十进制
        public static void anOut(String a, int b) {
            char[] chars = a.toCharArray();
            int num = 0;
            for (int i = 0; i < chars.length; i++) {
                int t = chars[i] - '0';
                if (t >= 10) {
                    t = chars[i] - 55;
                }
                num += t * Math.pow(b, chars.length - i - 1);
            }
            System.out.println(num);
        }

    主函数调用:

    public static void main(String[] args) {
            an(26, 16);
            System.out.println();
            anOut("1A", 16);
    
        }

     

    展开全文
  • import java.util.Scanner; public class Main {        public static void main(String[] args) {  Scanner sc = new Scanner(System.in);  int n = sc.next
  • import java.util.Scanner; public class convert { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.print("请输入您要转换的整数: "); int num=sc.nextInt()...
  • Java十进制转换为二进制算法

    千次阅读 2019-05-11 14:55:21
    import java.util.Scanner; public class Day1502 { //输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 public static void main(String[] args) { Scanner s = new Scanner(System.in); System....
  • 进制转换算法--java实现

    千次阅读 2019-03-19 11:20:38
    首先区分 2进制 只有0和1组成 如:010101 8进制 以0开头,0~7组成 如:012345 ...十进制转二进制 方法为:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下...
  • 数字电路课程讲过这种方法,后来忘了,想... * 10进制转化7进制 */ public static String toSeven(int number){ String result=""; String remain = ""; while (number>=7){ remain = String.valueOf(number...
  • Java——十进制转换为任意进制(两种方法)

    万次阅读 多人点赞 2018-10-18 19:32:27
    1. 方法一  ... import java.util.Scanner;... // 十进制转换为 n 进制 public String fun(int n,int num) { // n 表示目标进制, num 要转换的值 String str= ""; int yushu ; // ...
  • 面试的时候被问到能否现场写一个进制转换的方法,比如10进制转16进制等. 内心戏: 卧槽,16进制是啥东西?满16进1位,但是怎么表示16呢?1,2,3,4,5,6,7,8,9,10,11,12,13,14,15?然后大于15就进一位? 我特么的连16进制是啥都...
  • Java编程之十进制转进制算法

    千次阅读 2017-07-18 20:32:58
    Java编写程序计算十进制整数及小数,二进制
  • Java十进制转换为二进制

    千次阅读 2021-02-09 15:42:59
    Java十进制到二进制转换的3种不同方法。 1. Integer.toString()方法 我们可以使用Integer类的toString()方法将十进制数转换为二进制数。此方法有两个参数,第一个参数是十进制数,第二个参数是我们要转换的...
  • Java进制转换和位运算专题

    千人学习 2019-05-14 21:28:37
    本课程是零基础学JAVA课程的第二阶段的课程,课程内容...内容包括:Java中的进制转换原理,十进制和二进制、八进制、十六进制的互相转换规律,位运算原理,按位与、按位或、按位取反、左移、右移、无符号右移的讲解!
  • // 十进制转三进制 public static String convertDecimalToTernary(int n){ StringBuilder sb = new StringBuilder(); sb.reverse(); while (n > 0) { sb.append(n % 3); n /= 3; } ...
  • Java实现基础练习十进制转十六进制

    万次阅读 多人点赞 2019-06-06 21:00:33
    基础练习 十进制转十六进制 时间限制:1.0s 内存限制:512.0MB 提交此题 锦囊1 锦囊2 问题描述  十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,...
  • JAVA十进制转二进制

    2021-04-07 15:24:12
    JAVA十进制转二进制代码按位与运算无符号右移方法的调用无返回值 代码 因为计算机本身就是二进制存储数据,所以只需要把所需转化的数字的每一位和1进行与运算,再对每一位进行输出即可 public static void main...
  • 任意进制整数的转换,用十进制数作为中转,原则上不能超过10进制数能表示的最大整数。
  •  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。 样例输入 FFFF 样例输出 65535 源代码: import ...
  • 在这里进行进制转换主要是思想的问题,大家都知道整数的十进制转二进制是比较容易实现的,而小数部分才是难点,所以我们在这里可以拆分为两个部分,整数部分和小数部分,以下就是详细代码加解释。 import java....
  • 十进制转二进制,用java的两种基本方法,适合新手

    万次阅读 多人点赞 2018-09-28 09:05:37
    十进制转二进制,用java方法 package cn.sxt; import java.util.Scanner; /** * 6. 从键盘输入某个十进制整数数,转换成对应的二进制整数并输出。 * * @author 10977 * */ public class Test9 { public ...
  • Java 二进制转十进制

    2020-03-23 23:30:02
    Java 二进制转十进制 方法一、使用Integer.parseInt("",2) Integer.parseInt("",2)第一个参数是字符串,第二个参数是把前面的字符串解析为什么进制的数,这里的意思就是把前面的字符串解析为2进制的数,返回一个...
  • Java中十六进制与十进制相互转换

    千次阅读 2020-03-17 19:58:35
    一:十进制转十六进制 public class 十进制转十六进制 { public static void main(String[] args) { int a = new Scanner(System.in).nextInt(); //把十进制整数转换为十六进制字符串,字母为小写 String ...
  • Java八进制转十进制

    2021-04-23 20:23:47
  • 十进制转十六进制的Java实现

    千次阅读 2018-06-03 21:57:37
    是在刷Leetcode题目的时候遇到的,先把题目贴过来:给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。注意:十六进制中所有字母(a-f)都必须是小写。十六进制字符串中...
  • JAVA实现16进制转10进制

    千次阅读 2021-06-10 18:12:17
    java中十六进制转十进制,可以使用Integer类的parseInt()方法直接转换,也可以自己写一个转换函数。 一、 Integer.parseInt() 十六进制转十进制,简单的方法就是使用Integer.parseInt()方法进制转换,一步到位。 1....
  • Integer.toBinaryString(data) //data为十进制,转换成二进制 Integer.toHexString(data) //data为十进制,抓换成十六进制 System.out.println(Integer.toBinaryString(100)); // 将100转换成二进制输出 ...
  • 十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。  给出一个非负整数,将它表示成十六进制的形式。 输入格式  输入包含一.....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 47,401
精华内容 18,960
关键字:

十进制转六进制算法java

java 订阅