【进制转换】Java怎么实现十进制转换到二进制、八进制、十六进制?
代码如下:
package basic;
import java.util.Scanner;
/*
* Goal:十进制数转换成八进制、二进制、十六进制
* Author:Tang.Mitnick
* Site:FaFu
* */
/*设计思想:封装一个方法使它实现十进制向二进制、八进制、十六进制的转换
* 首先如果这个数非零,则把它与要转换的进制数的最大进位数进行与运算,这样就能够取出
* 需要转换的进制数对应的转换后进制数的基数,然后对应它对应基数数组中的元素,再把对应的
* 基数存在新的数组中(记住是倒序的),打印非零元素即可
*
* */
public class BinarySystem {
public static void transform(int number,int max,int bitwise)
{
//考虑用户输入0情况
if(number==0)
{
System.out.println(0);
return ;
}
char[] radix = { '0','1','2','3'//所有进制的基数数组;比如二进制由1和0组成
,'4','5','6','7'
,'8','9','A','B'
,'C','D','E','F'};
char[] array = new char[32];//因为输入的数是int型的,所以数组长度为32位
int pointer = array.length;//pointer代表数组中的下标,可以理解为指针
while(number!=0)
{
int temp = number & max;//与该进制的最大进位数进行与运算
array[--pointer] = radix[temp];/*把与后的结果对应的数组元素进行
从最后位向前位赋值*/
number = number >>> bitwise;//数字进行位运算
}
//打印计算后的新数组
for(int x=pointer; x<array.length; x++)
{
System.out.print(array[x]);
}
return ;
}
/*
十进制-->二进制
*/
public static void toBin(int number)
{
System.out.println("二进制:");
transform(number,1,1);
System.out.println(" ");
}
/*
十进制-->八进制
*/
public static void toOctal(int number)
{
System.out.println("八进制:");
transform(number,7,3);
System.out.println(" ");
}
/*
十进制-->十六进制
*/
public static void toHex(int number)
{
System.out.println("十六进制:");
transform(number,15,4);
}
public static void main(String[] args)
{
System.out.print("请输入需要转换的十进制数:");
Scanner scanner=new Scanner(System.in);
int number=scanner.nextInt();
scanner.close();
toBin(number);
toOctal(number);
toHex(number);
}
}
结果展示: