我是用StringBuilder做的,网上还有更简单的方法(用递归实现的,只有一行),不过我看不懂什么意思,暂时只会这个
/**
* 二进制加法,输入和输出都是字符串类型
* @param bin1
* @param bin2
* @return
*/
public static String sum(String bin1,String bin2){
StringBuilder result = new StringBuilder();
int len1 = bin1.length();
int len2 = bin2.length();
//cout表示进位
int cout = 0;
for(int i=1;i<=len1&&i<=len2;i++){
//获取两个数第i位的数字
int num1 = bin1.charAt(len1-i)-48;
int num2 = bin2.charAt(len2-i)-48;
//在开头插入单位相加结果
result.insert(0,num1^num2^cout);
cout = num1&num2;
}
//当循环运算完毕时,在开头插入进位数并转成String形式输出
return result.insert(0,cout).toString();
}