一招解决不同进制相加问题

估计进制相加进位是很多道友萌新的一个小难点,估计位与位的相加大家都是没有什么问题,最主要的就是有进位,以及首位如何判断

下面为大家介绍一个比较简单方便快捷的使用方法!!!

此次介绍的例题为上星期传智杯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即可

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值