Java进制转换基础知识总结

算法前导知识

1.进制转换

方法:除基取余,直到商为0,余数反转

十进制转换成二、八、十六进制

方法:除基取余,直到商为0,余数反转

我自己的思路是

首先要创建一个数组,用来接收每一位余数,由于最后余数需要反转,如果要依次存放每一个余数,最后需要把数组倒着输出。但是在编译的时候出现了一个bug,就是数组首先会默认里面全是0,我本定义的数组长度可能不是刚好符合用来存储余数的长度,就导致了后来输出的时候,没有用到的数组位置上还是0
然后我就用了一个count变量来计算余数的个数,也相当于存放余数数组的下标吧,从count-1倒着输出

package com.wang.lanqiao.jinzhi;

public class shizhuaner {
    public static void main(String[] args) {
        
        int num = 100;
        int count=0;  //用来计算余数的个数
        int sum = 0;
        int[] arr= new int[10];
        while(num!=0){
            arr[count] = num%2;
            count++;
            num/=2;
        }

        for (int i=count-1;i>=0;i--){		//这里需要减1,因为在while循环里面,最后一个余数被数组接受之后,count还自增1
            System.out.println(arr[i]);
        }
    }

}

然后,现在进行优化一下,就是输入一个十进制数字,输入你想转化的进制数,输出这个你想要的进制数

package com.wang.lanqiao.jinzhi;

import java.util.Scanner;

public class shizhuaner {
    public static void main(String[] args) {
      
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入一个十进制整数:");
        int num = scanner.nextInt();
        System.out.println("输入你想要转换的进制:");
        int radix = scanner.nextInt();
        
        int count=0;
        int sum = 0;
        int[] arr= new int[10];
        
        while(num!=0){
            arr[count] = num%radix;
            count++;
            num/=radix;
        }

        for (int i=count-1;i>=0;i--){
            System.out.print(arr[i]);
        }
    }

}

在写完这个基础算法题之后,在网上查阅,知道了有一个直接转换进制的方法

1.十进制转换成其他常用的进制直接调用方法
10进制转化其他进制对应的方法参数:n(原10进制数据),radix(进制)返回值
10进制转2进制Integer.toBinaryString(n);一个二进制字符串
10进制转8进制Integer.toOctalString(n);一个八进制字符串
10进制转16进制Integer.toHexString(n);一个16进制字符串
10进制转 radix进制Integer.toString(n, radix);一个r进制字符串

这里的nradix都是 int 类型的

package com.wang.lanqiao.jinzhi;

import java.util.Scanner;

public class shizhuaner {
    public static void main(String[] args) {
 
        System.out.println(Integer.toString(100,2));
        System.out.println(Integer.toString(100,8));
        System.out.println(Integer.toString(100,16));
    }

}

二、八、十六进制转换成十进制

2.二、八、十六进制转换成十进制直接调用方法
10进制转化其他进制对应的方法参数:s(原10进制数据),radix(进制)返回值
radix进制转10进制Integer.valueOf(“1100100”,2)一个十进制
radix进制转10进制Integer.parseInt(“10”,8)一个十进制

s是String类型的,radix是int类型的,这两种方法记住

package com.wang.lanqiao.jinzhi;

import java.util.Scanner;

public class shizhuaner {
    public static void main(String[] args) {
 
        System.out.print("请输入数字:");
        String str = scanner.next();		//注意这个地方是String类型的,不是int类型的
        
        System.out.print("请输入现在这个数的进制:");
        Scanner scanner = new Scanner( System.in);
        int jinzhi = scanner.nextInt();

        int num = Integer.valueOf(str,jinzhi);	//这个方法就是需要记住的
        
        System.out.println(num);
    }

}
package com.wang.lanqiao.jinzhi;

import java.util.Scanner;

public class shizhuaner {
    public static void main(String[] args) {
       
        System.out.println(Integer.toString(100,2));
        System.out.println(Integer.toString(100,8));
        System.out.println(Integer.toString(100,16));
        System.out.println(Integer.valueOf("1100100",2));

        System.out.println(Integer.toBinaryString(100));

        System.out.println(Integer.toOctalString(100));
        System.out.println(Integer.toHexString(100));

        System.out.println(Integer.parseInt("1100110",2));

        System.out.println(Integer.parseInt("10",8));

        System.out.println(Integer.parseInt("10",16));

    }

}

打卡,发布的三篇文章,虽然很基础的内容,我还是有所收获的。
有不对的地方,欢迎各位小伙伴指出哟,一起进步!!!


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值