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