Java十进制转其他进制

刚刚进入Java,看的是教学视频,为了巩固一下所学,便顺手写了一个程序,虽然Java有提供自动转换,但是作为新手练习练习一下

大致思路:先进行“与运算”,再右移,如此循环往复

以十进制—->十六进制为例

                                       十进制60转十六进制为3C
第一步:先与运算:&15
             0000-0000 0000-0000 0000-0000 0011-1100 —->60
         & 0000-0000 0000-0000 0000-0000 0000-1111 —->15
       —————————————————————
            0000-0000 0000-0000 0000-0000 0000-1100 —->12 (就是C)

第二步:再右移4位:>>>4  (因为4个二进制位==1个十六进制位)
             0000-0000 0000-0000 0000-0000 0000-0011 —->3

第三步:再与运算:&15
             0000-0000 0000-0000 0000-0000 0000-0011 —->3
         & 0000-0000 0000-0000 0000-0000 0000-1111 —->15
       —————————————————————
            0000-0000 0000-0000 0000-0000 0000-0011 —->3

————————————————————-结果:3C————————————————————-

 

总结:

十进制—->二进制:&1 and >>>1 and &1 ……(循环)

十进制—->八进制:&7 and >>>3 and &3 ……(循环)

十进制—->十六进制:&15 and >>>4 and &4 ……(循环)

 

运行结果:

《Java十进制转其他进制》

 

 

 

import java.util.Scanner;

public class trans 
{
	public static void main (String[] args)
	{
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入一个十进制数");
		int num=sc.nextInt();
		
		
		System.out.print("二进制是:\t");
		toBinary(num);
		System.out.print("八进制是:\t");
		toOcta(num);
		System.out.print("十六进制是:\t");
		toHex(num);
	}
	
	//十进制转二进制
	public static void toBinary(int num)
	{
		trans(num,1,1);
	}
	
	//十进制转八进制
	public static void toOcta(int num)
	{
		trans(num,7,3);
	}
	
	//十进制转二进制、八进制、十六进制
	public static void toHex(int num)
	{
		trans(num,15,4);
	}
	
	//十进制转二进制、八进制、十六进制
	public static void trans(int num,int mode,int offset)
	{
		char[] tran={'0','1','2','3',
                             '4','5','6','7',
                             '8','9','A','B',
                             'C','D','E','F'};
		
		char[] arr=new char[32];
		//记录位置
		int pos=arr.length;
		
		while (num!=0)
		{
			int temp=num& mode;
			//从数组后面开始存,逆序存储
			arr[--pos]=tran[temp];
			num=num>>>offset;
		}
		
		for (int x=pos;x<arr.length;x++)
			System.out.print(arr[x]);
		System.out.println();
	}
}

 

 

    原文作者:进制转换
    原文地址: https://blog.csdn.net/framema/article/details/81638455
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞