题目:输入两个表示二进制的字符串,请计算它们的和,并以二进制字符串的形式输出。
package 剑指Offer.整数除法和二进制加法; /** * @program:多线程和IO * @descripton:二进制加法 * @题目:输入两个表示二进制的字符串,请计算它们的和,并以二进制字符串的形式输出。 * @author:ZhengCheng * @create:2021/9/24-18:38 **/ public class AddBybBinary { public static void main(String[] args) { String num1 = "10110"; String num2 = "100111"; String s = addByBinary(num1, num2); System.out.println(s); } private static String addByBinary(String str1, String str2) { StringBuilder sb = new StringBuilder(); int i = str1.length()-1; int j = str2.length()-1; int tempNum = 0; //tempNum while ( i>=0|| j>= 0){ int tempa = i >= 0? str1.charAt(i--) -'0':0;//重点步骤,注意判断i和j int tempb = j >= 0? str2.charAt(j--) -'0':0; int sum = tempa + tempb + tempNum; tempNum = sum >2?1:sum; sum = sum >= 2 ? sum-2:sum; sb.append(sum); } if (tempNum == 1){ sb.append(1); } return sb.reverse().toString(); } }