估计进制相加进位是很多道友萌新的一个小难点,估计位与位的相加大家都是没有什么问题,最主要的就是有进位,以及首位如何判断
下面为大家介绍一个比较简单方便快捷的使用方法!!!
此次介绍的例题为上星期传智杯B组的第二题(进制转换问题),本次介绍只实现结果不实现格式
具体详解请看代码注释,绝对详细!
public class baseSum {
public static void main(String[] args) {
String a="33211";
String b="3221";
StringBuffer stringBuffer = new StringBuffer();
int temp=0;//中间表量
int vv=2;
//从后往前依次计算
for (int i = a.length()-1,j=b.length()-1;i>=0||j>=0; i--,j--) {
int sum=temp;//第一次初始化为temp(也就是0),从第二次开始就是后一位对前一位的进位
sum+= i>=0?a.charAt(i)-'0':0;//累加a字符串的索引sum并判断a是否加到了第一位
sum+= j>=0?b.charAt(j)-'0':0;//继续累加b字符串的索引上的值也判断是否到第一位
stringBuffer.append(sum%vv);//添加到stringBuffer里面
temp=sum/vv++;//得到后一位对前一位的进位
}
//再次判断temp是否为0,若不为0则是对前一位的进位,直接添加即可
stringBuffer.append(temp!=0?temp:"");
//反转即为得到的进位相加
System.out.println(stringBuffer.reverse());
}
}
若是相同进制则可以直接把v++改成vv即可