Java进制转换

进制介绍
二进制:0B开头,0-1
八进制:0开头,0-7
十进制:0-9
十六进制:0x开头,0-9和A-F

public class Binary{
	public static void main(String[] args){
		//二进制 10
		int n1=0B1010
		//十进制 1010
		int n2=1010
		//八进制 520
		int n3=01010
		//十六进制 65793
		int 0x10101
		
	}
} 

进制
进制
n进制转换为十进制
1.从n进制数的最低位开始,逐位将每一位数字乘以n的幂,然后相加得到十进制数。
2.从右向左遍历每一位数字,每次将当前位数字乘以n的幂,然后累加到最终的十进制结果中。

public class NumberConverter {

    public static int convertToDecimal(int number, int base) {
    // 十进制结果初始化为0,幂初始化为0
        int decimalNumber = 0;
        int power = 0;

        while (number > 0) {
        // 取当前位的数值
            int digit = number % 10;
        //当前位数值乘以n进制的幂数
            decimalNumber += digit * Math.pow(base, power);
        //去除已处理的最低位
            number /= 10;
        //幂+1
            power++;
        }
//返回结果
        return decimalNumber;
    }
//入口函数
    public static void main(String[] args) {
        int binaryNumber = 101;
        int base = 2;
        int decimalResult = convertToDecimal(binaryNumber, base);
        System.out.println("The decimal equivalent of binary number " + binaryNumber + " is: " + decimalResult);
    }
}

十进制转n进制
1.不断地将十进制数除以n,直到商为0为止,每次取余数即为转换后的n进制数的一个数字。
2.将得到的余数按照逆序排列,即可得到最终的n进制数表示

public class NumberConverter {

    public static String convertFromDecimal(int decimalNumber, int base) {
        StringBuilder result = new StringBuilder();
        while (decimalNumber > 0) {
            int remainder = decimalNumber % base; // 求余数
            result.insert(0, remainder); // 将余数插入到字符串的开头
            decimalNumber /= base; // 更新十进制数为商,继续循环
        }

        return result.toString();
    }

    public static void main(String[] args) {
        int decimalNumber = 42;
        int base = 2;
        String binaryResult = convertFromDecimal(decimalNumber, base);
        System.out.println("The binary equivalent of decimal number " + decimalNumber + " is: " + binaryResult);
    }
}

任意两个进制的转换
进制A转换为进制B,可以先将A转换为十进制,再转换为B进制

public class NumberConverter {
//a进制转为十进制
public static int convertToDecimal(int number, int base) {
    // 十进制结果初始化为0,幂初始化为0
        int decimalNumber = 0;
        int power = 0;
        while (number > 0) {
        // 取当前位的数值
            int digit = number % 10;
        //当前位数值乘以n进制的幂数
            decimalNumber += digit * Math.pow(base, power);
        //去除已处理的最低位
            number /= 10;
        //幂+1
            power++;
        }
//返回结果
        return decimalNumber;
    }
    
//十进制转为b进制
 public static String convertFromDecimal(int decimalNumber, int base) {
        StringBuilder result = new StringBuilder();
        while (decimalNumber > 0) {
            int remainder = decimalNumber % base; // 求余数
            result.insert(0, remainder); // 将余数插入到字符串的开头
            decimalNumber /= base; // 更新十进制数为商,继续循环
        }
        return result.toString();
    }

    public static void main(String[] args) {
        String binaryNumber = "1010";
        int baseFrom = 2;
        //二进制转换为十进制
        int decimalNumber = convertToDecimal(binaryNumber, baseFrom);
        int baseTo = 8;
        //十进制转为八进制
        String result = convertFromDecimal(decimalNumber, baseTo);
        //输出结果
        System.out.println("The binary equivalent of decimal number " + decimalNumber + " is: " + binaryResult);
    }
}
  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值