【1】二进制求和

本文探讨了二进制求和的原理,通过详细解释每个位上的加法操作,阐述了如何处理进位和拼接二进制结果。重点在于理解如何将二进制数字相加,并通过示例代码展示了实现过程,强调了长字符串处理和进位计算的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

输入: a = "11", b = "1"
输出: "100"

二进制的规则是 1+1 = 10,这个 10可以看成是1 和0拼起来,关键就是这两个数怎么来怎么拼。

对应位置上的求和可以是

 int sum = (int)(a.charAt(pa) - '0') + (int)(b.charAt(pb) - '0') + carries;

把它拆掉:一部分为二进制的结果(利用对2取余数 ,不是1就是0 ):rst = String.valueOf(sum%2)+rst

另一部分carries为进位。  便是对2取整数 carries =  sum/2; 

一开始以为这个-‘0’可以省略,如果省略了出来的是对应的ASCII码

一遍遍的循环上面这个过程,什么作为判断条件呢?输入string的长度。从最后一位开始往前面算。

这边需要先确定一下谁在上面(斜眼笑)

统一 一下:长的在上,短的在下。

这样就可能出现短的加光了。因此需要再加一个单独对长的进行运算。

以下是代码:

 

public class Solution {
    public String addBinary(String a, String b) {
        if(a.length() < b.length()){
            String tmp = a;
            a = b;
            b = tmp;
        }
        
        int pa = a.length()-1;
        int pb = b.length()-1;
        int carries = 0;
        String rst = "";
        
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值