【进制转换】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);

	}

}

结果展示:
实例运行

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是Java算法实现十进制转换二进制、八十六进制的代码示例: ```java public class NumberConversion { public static void main(String[] args) { int decimalNumber = 345; // 要转换十进制数 String binaryNumber = decimalToBinary(decimalNumber); String octalNumber = decimalToOctal(decimalNumber); String hexadecimalNumber = decimalToHexadecimal(decimalNumber); System.out.println("二进制数为:" + binaryNumber); System.out.println("八数为:" + octalNumber); System.out.println("十六进制数为:" + hexadecimalNumber); } // 十进制二进制 public static String decimalToBinary(int decimalNumber) { return Integer.toBinaryString(decimalNumber); } // 十进制转八 public static String decimalToOctal(int decimalNumber) { return Integer.toOctalString(decimalNumber); } // 十进制十六进制 public static String decimalToHexadecimal(int decimalNumber) { return Integer.toHexString(decimalNumber); } } ``` 运行结果: ``` 二进制数为:101011001 八数为:531 十六进制数为:159 ``` 以上代码中的三个转换方法都是使用Java内置的方法来实现,分别是`Integer.toBinaryString()`、`Integer.toOctalString()`和`Integer.toHexString()`。如果需要手动实现这些转换算法,可以参考以下示例代码: ```java public class NumberConversion { public static void main(String[] args) { int decimalNumber = 345; // 要转换十进制数 String binaryNumber = decimalToBinary(decimalNumber); String octalNumber = decimalToOctal(decimalNumber); String hexadecimalNumber = decimalToHexadecimal(decimalNumber); System.out.println("二进制数为:" + binaryNumber); System.out.println("八数为:" + octalNumber); System.out.println("十六进制数为:" + hexadecimalNumber); } // 十进制二进制 public static String decimalToBinary(int decimalNumber) { StringBuilder binaryNumber = new StringBuilder(); while (decimalNumber > 0) { binaryNumber.insert(0, decimalNumber % 2); decimalNumber /= 2; } return binaryNumber.toString(); } // 十进制转八 public static String decimalToOctal(int decimalNumber) { StringBuilder octalNumber = new StringBuilder(); while (decimalNumber > 0) { octalNumber.insert(0, decimalNumber % 8); decimalNumber /= 8; } return octalNumber.toString(); } // 十进制十六进制 public static String decimalToHexadecimal(int decimalNumber) { StringBuilder hexadecimalNumber = new StringBuilder(); while (decimalNumber > 0) { int remainder = decimalNumber % 16; if (remainder < 10) { hexadecimalNumber.insert(0, remainder); } else { hexadecimalNumber.insert(0, (char) ('A' + remainder - 10)); } decimalNumber /= 16; } return hexadecimalNumber.toString(); } } ``` 以上代码中的三个转换方法都是使用基本算法来实现的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值