java實現二進位制的加法
class Solution{
public String addBinary(String a,String b){
int carry = 0; // 儲存進位
int sum = 0; // 儲存進位與兩個位之間的和
int opa = 0;
int opb = 0;
StringBuilder res = new StringBuilder();
//將兩個二進位制數位補齊,在短的前面添0
while(a.length() != b.length()){
if(a.length() > b.length()){
b = "0" + b;
}else{
a = "0" + a;
}
}
//從後往前做加法
for(int i = a.length()-1;i>=0;i--){
opa = a.charAt(i) - '0'; //String a 中的字元的ASCII碼值與‘0’字元的差值
opb = b.charAt(i) - '0'; //String b 中的字元的ASCII碼值與‘0’字元的差值
sum = opa + opb + carry;
if(sum >=2){
carry = 1;
res.append((sum-2));
}else{
carry = 0;
res.append(sum);
}
}
if(carry == 1){
res.append("1");
}
return res.reverse().toString();
}
}
public class addBinary {
public static void main(String[] args) {
String a = "11";
String b = "1";
String res = new Solution().addBinary(a, b);
System.out.print(res);
}
}