您现在的位置是:首页 > 后台技术 > 数据结构与算法数据结构与算法

二进制求和

第十三双眼睛2023-11-25【数据结构与算法】人已围观

简介二进制求和
给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。

最简单的思路:将二进制数转换为十进制数,相加后,再将结果转换为二进制。不过太长的字符串不行。代码如下
public static String method1(String s1,String s2) {
    int sum = Integer.parseInt(s1, 2) + Integer.parseInt(s2, 2);
    return Integer.toBinaryString(sum);
}

第二种思路:先找出两个二进制串中比较长的,然后开始循环从低位开始,两个二进制串的对应位相加得到和,将和取余数得到结果位,将和取整,得到前一位的进位,前一位的两个二进制位相加时,加上刚才的进位 ,循环完毕以后,如果和不为0,则添加到结果位中,这个时候,每个结果位拼接起来的二进制串是反着的,是从地位到高位的,需要翻转一下,就是最终结果。代码如下:
public static String method2(String a,String b) {
    int carry = 0;
    StringBuilder builder = new StringBuilder();
    int length = Math.max(a.length(), b.length());
    for (int i = 0; i<length; i ++) {
        if (i < a.length()) {
            carry = carry + (a.charAt(a.length() - 1 - i) - '0');
        }
        if (i < b.length()) {
            carry = carry + (b.charAt(b.length() - 1 - i) - '0');
        }
        builder.append((char) (carry % 2 + '0'));
        carry = carry / 2;
    }
    if (carry > 0) {
        builder.append(1);
    }
    builder.reverse();
    return builder.toString();
}

Tags:

很赞哦! ()

文章评论

    共有条评论来说两句吧...

    用户名:

    验证码:

本站推荐

站点信息

  • 网站名称:JavaStudy
  • 建站时间:2019-1-14
  • 网站程序:帝国CMS7.5
  • 文章统计242篇文章
  • 标签管理标签云
  • 统计数据百度统计
  • 微信公众号:扫描二维码,关注我们