[Java]进制转换代码实例·初级

	//十进制转二进制
	public static String dec2Bin(int a){
		String result="";
		if(a==0)return "0";
		while(a!=1){
			if(a%2==0)result+="0";
			else result+="1";
			a/=2;
		}//辗转相除
		result+="1";
		String reString="";
		//倒序
		for(int i=result.length()-1;i>=0;i--){
			reString+=result.charAt(i);
		}
		return reString;
	}

	//二进制转十进制
	public static int bin2Dec(String a){
		int dec=0;
		for(int i=0;i<a.length();i++){
			int c=(int)(a.charAt(i)-'0');
			dec+=c*pow(2,a.length()-i-1);
		}
		return dec;
	}

	//十进制以下进制任意转换(a进制数src,转b进制数),其实就是以上的两个算法的综合
	public static String d2d(String src,int a,int b){
		int sum=0;
		for(int i=0;i<src.length();i++){
			int c=(int)(src.charAt(i)-'0');
			sum+=c*pow(a,src.length()-i-1);
		}
		String result="";
		if(sum==0)return "0";
		while(sum!=0){
			int in=sum%b;
			result+=Integer.toString(in);
			sum/=b;
		}
		String reString="";
		for(int i=result.length()-1;i>=0;i--){
			reString+=result.charAt(i);
		}
		return reString;
	}

其中,求幂函数可以用快速幂:

	//快速幂
	public static int pow(int a,int b){
		int answer=1,base=a; 
		while(b!=0){
			if((b & 1)!=0)answer*=base;
			base*=base;
			b>>=1;
		}
		return answer;
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值