各种进制转换最简单总结(附任意进制转换代码)

A进制转B进制

A=10?

1、A=10->A除B取余至余数为0,将余数从下往上连接即可;

2、A!=10->A从右往左第i位*A的i次方(i从0开始)转成10进制;

16和8之间的转换要通过2进制转换也可以,但其实转2的时候也是把每一位当成10进制数去除2取余得到每一位的二进制数最后连起来,值得注意的是转换顺序

比如7534(8)转成2进制

7转成2进制=0111,5%2=0101,3%2=0011,4%2=0100,然后把最高位的0去掉

得到的是111 101 011 100

再转为16进制1111->f 0101->5 1100->c

而其他进制则不能通过2进制进行转换,比如3进制的21转为2进制应该是111。不是通过2->0010,1->0001,而是先转为10进制21(3)->7(10)->111(2)

import java.util.Scanner;

public class BaseConversion {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner in = new Scanner(System.in);
		System.out.println("请输入待转换数的进制(不能为0或负数):");
		int A = in.nextInt();
		while(A<=0) {
			System.out.println("都说了不能为负数或者0!请重新输入!");
			A = in.nextInt();
		}
		String N1 = in.nextLine();
		
		System.out.println("请输入待转换数的值(请遵守进制规则):");
		String Number = in.nextLine();
		int Number_10 = 0;
		int pow = 1;
		
		for(int i = Number.length()-1;i>=0;i--) {
			int Asc = Number.charAt(i)-'0';
			if(Asc>=0&&Asc<=9) {
				if(Asc>=A) {
					System.out.println("请遵守进制规则");
					return;
				}
				Number_10 = Number_10+Asc*pow;
				pow = pow*A;
			}else if(Asc>=17&&Asc<=42) {
				if(Asc>=A) {
					System.out.println("请遵守进制规则");
					return;
				}
				Number_10 = Number_10+Asc*pow;
				pow = pow*A;
			}else {
				System.out.println("请遵守进制规则");
				return;
			}
			
		}
		
		System.out.println("请输入想要转换的进制(不能为0或负数):");
		int B = in.nextInt();
		
		StringBuilder re = new StringBuilder();
		while(Number_10>0) {
			int yushu = Number_10%B;
			re.append(yushu);
			Number_10 = Number_10/B;
		}
		
		System.out.println("结果是:"+re.reverse());
	}

}

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值