Add Binary

题意:将两个二进制的数字相加,并且结果也是以二进制的形式输出。
思路:从两个数的低位开始进行相加。两个二进制数的位数可能不一样,首先需要将位数低的那个数进行扩展,和位数高的数一样长。然后按位相加。
代码:

package AddBinary;

import com.sun.org.apache.xml.internal.security.Init;

public class AddBinary {
public String Binary(String a , String b){
int len1 = a.length();
int len2 = b.length();
int length = Math.max(len1,len2);
if(len1 > len2){
gap = len1 - len2;
    while(gap-- > 0){
        b =0+ b;
        }
    }
if(len2 > len1){
gap = len2 - len1;
    while(gap-- > 0){
        b =0+ b;
        }
    }
int carry = 0;
StringBuilder sb = new StringBuilder();
for(int i =0 ; i < length ; i++){
    int temp1 = a.charAt(i);
    int temp2 = b.charAt(i);
    int temp = temp1 + temp2;
    sb.insert(0,(temp+carry) % 2);
    if((temp+carry) > 1)  carry = 1;
    else carry = 0;
}
if(carry == 1) sb.insert(0,1);
    return sb.tostring();
    }
    public static void main(String[] args) {
        AddBinary ab = new AddBinary();
        String a = "111";
        String b = "101";
        System.out.println(ab.Binary(a, b));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值